W3docs

date_sun_info()

Aprenda como date_sun_info() do PHP retorna horários de nascer e pôr do sol, trânsito e crepúsculo para uma data e localização específicas.

Introdução

A função date_sun_info() do PHP retorna os horários de nascer do sol, pôr do sol, trânsito e crepúsculo para uma data específica e localização geográfica. Em vez de buscar dados solares de um serviço externo, você passa um timestamp e um par de coordenadas e recebe de volta um array pronto com timestamps Unix. Esta página cobre a sintaxe, parâmetros, valores de retorno e um exemplo completo.

Nota: date_sun_info() foi descontinuada no PHP 8.1 e removida no PHP 8.2. Este tutorial é fornecido para manutenção de código legado. Para aplicações PHP modernas, considere um serviço externo (como a API Sunrise-Sunset) ou uma biblioteca dedicada como sunrise-sunset-php.

Sintaxe

date_sun_info(int $timestamp, float $latitude, float $longitude): array

Parâmetros

ParâmetroTipoDescrição
$timestampintUm timestamp Unix (em UTC) que identifica o dia a ser consultado.
$latitudefloatLatitude da localização, em graus. Positivo = norte, negativo = sul.
$longitudefloatLongitude da localização, em graus. Positivo = leste, negativo = oeste.

Valor de retorno

A função retorna um array associativo de timestamps Unix. Cada chave marca um evento solar para aquele dia nas coordenadas fornecidas:

ChaveSignificado
sunriseHorário em que o sol cruza o horizonte ao amanhecer.
sunsetHorário em que o sol cruza o horizonte ao anoitecer.
transitMeio-dia solar — o sol está no seu ponto mais alto.
civil_twilight_begin / civil_twilight_endSol 6° abaixo do horizonte (atividade ao ar livre ainda possível).
nautical_twilight_begin / nautical_twilight_endSol 12° abaixo do horizonte (horizonte visível no mar).
astronomical_twilight_begin / astronomical_twilight_endSol 18° abaixo do horizonte (céu completamente escuro).

Se o sol nunca nasce ou nunca se põe naquele dia (por exemplo, regiões polares no verão ou inverno), o valor relevante é true (sol está acima o dia todo) ou false (sol nunca nasce) em vez de um timestamp.

Usando a Função date_sun_info()

Como o primeiro argumento é um timestamp Unix, a abordagem mais simples é criar um objeto DateTime para o dia desejado e passar seu timestamp via getTimestamp(). O fluxo funciona assim:

graph TD;
    A[Create DateTime object] --> B[Get timestamp for the date];
    B --> C[Call date_sun_info with timestamp + coordinates];
    C --> D[Read sunrise / sunset / twilight from the result];

Aqui está um exemplo completo para Londres, Reino Unido:

php— editable, runs on the server

Neste exemplo, criamos um objeto DateTime que representa uma data específica e especificamos a latitude e longitude de Londres, Reino Unido. Em seguida, chamamos a função date_sun_info() e passamos o timestamp do objeto DateTime, junto com a latitude e longitude.

A função date_sun_info() retorna um array que contém informações sobre o nascer do sol, pôr do sol e outros horários relacionados para a data e localização especificadas. Aqui está um exemplo da saída:

Array
(
    [sunrise] => 1646242025
    [sunset] => 1646282555
    [transit] => 1646262290
    [civil_twilight_begin] => 1646239733
    [civil_twilight_end] => 1646284847
    [nautical_twilight_begin] => 1646235838
    [nautical_twilight_end] => 1646288742
    [astronomical_twilight_begin] => 1646231998
    [astronomical_twilight_end] => 1646292582
)

Os valores são timestamps Unix brutos, então para exibi-los você formata cada um com date() ou date_format():

<?php
$sun_info = date_sun_info(strtotime('2023-03-03'), 51.5074, -0.1278);
echo 'Sunrise: ' . date('H:i:s', $sun_info['sunrise']) . "\n";
echo 'Sunset:  ' . date('H:i:s', $sun_info['sunset']) . "\n";
?>

Nota sobre fusos horários: A função espera um timestamp Unix (UTC). Os horários retornados também são timestamps UTC, calculados a partir das coordenadas fornecidas, independentemente do fuso horário local do servidor. Quando você os formata com date(), a saída usa o fuso horário definido por date_default_timezone_set(), então defina-o explicitamente se precisar de horários locais.

Funções relacionadas

Conclusão

date_sun_info() retorna o nascer do sol, pôr do sol, trânsito e as três fases do crepúsculo para uma data e localização específicas como um array de timestamps Unix UTC. Passe um timestamp mais latitude e longitude e, em seguida, formate os valores retornados com date() para exibi-los. É útil para recursos meteorológicos, de agendamento e baseados em localização — mas lembre-se de que foi removida no PHP 8.2, portanto, use uma API ou biblioteca externa em código moderno.

Prática

Prática
O que a função 'date_sun_info' faz no PHP?
O que a função 'date_sun_info' faz no PHP?
Was this page helpful?