yes SUNFUNCS_RET_TIMESTAMP does return GMT(0) time
so something like...
$arr = localtime(date_sunset(time(),SUNFUNCS_RET_TIMESTAMP,51.5,0)); // London
$hh = $arr[2];
$mm = $arr[1];
Will give figure out your localtime and daylight saving (BST)
(PHP 5, PHP 7, PHP 8)
date_sunset — Retorna a hora do pôr do sol para um dia e uma localização informados.
Esta função foi DESCONTINUADA desde o PHP 8.1.0. Confiar nesta função é altamente desencorajado. Use date_sun_info() no lugar.
$timestamp
,$returnFormat
= SUNFUNCS_RET_STRING
,$latitude
= null
,$longitude
= null
,$zenith
= null
,$utcOffset
= null
A função date_sunset() retorna o horário do pôr do sol para um
dia (especificado como um timestamp
) e uma localização informados.
timestamp
O timestamp
do dia do pôr do sol
desejado.
returnFormat
Constante | Descrição | Exemplo |
---|---|---|
SUNFUNCS_RET_STRING | Retorna o resultado como uma string | 16:46 |
SUNFUNCS_RET_DOUBLE | Retorna o resultado como um float | 16.78243132 |
SUNFUNCS_RET_TIMESTAMP | Retorna o resultado como um int (timestamp) | 1095034606 |
latitude
Padronizado para o leste, passe um valor negativado para o oeste. Veja também: date.default_latitude
longitude
Padronizado para o leste, passe um valor negativado para o oeste. Veja também: date.default_longitude
zenith
zenith
é o ângulo entre o centro do sol
e uma linha perpendicular à superfície da Terra. É padronizado para
date.sunset_zenith
Ângulo | Descrição |
---|---|
90°50' | Pôr do sol: o ponto onde o sol se torna invisível. |
96° | Crepúsculo civil: convencionado para significar o final do crepúsculo. |
102° | Crepúsculo náutico: o ponto no qual o horizonte termina de ficar visível no mar. |
108° | Crepúsculo astronômico: o ponto no qual o sol termina se tornar fonte de iluminação. |
utcOffset
Especificado em horas.
O parâmetro utcOffset
é ignorado se
returnFormat
for
SUNFUNCS_RET_TIMESTAMP
.
Retorna o horário do pôr do sol no returnFormat
especificado
em caso de sucesso ou false
em caso de falha. Um potencial motivo para falha é quando o
sol não se põe, o que acontece dentro dos círculos polares durante parte
do ano.
Toda chamada a uma função de data/hora gerará um E_WARNING
se o fuso horário não for válido. Veja também date_default_timezone_set()
Versão | Descrição |
---|---|
8.1.0 | Esta função foi descontinuada em favor de date_sun_info(). |
8.0.0 |
latitude , longitude ,
zenith e utcOffset agora podem ser nulos.
|
Exemplo #1 Exemplo da função date_sunset()
<?php
/* Calcula o horário do pôr do sol para Lisboa, Portugal
Latitude: 38.4 norte
Longitude: 9 oeste
Zênite ~= 90
deslocamento UTC: +01:00 GMT
*/
echo date("D M d Y"). ', horário do pôr do sol : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
O exemplo acima produzirá algo semelhante a:
Mon Dec 20 2004, horário do pôr do sol : 18:13
Exemplo #2 Sem pôr do sol
<?php
$solstice = strtotime('2017-12-21');
var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>
O exemplo acima produzirá:
bool(false)
yes SUNFUNCS_RET_TIMESTAMP does return GMT(0) time
so something like...
$arr = localtime(date_sunset(time(),SUNFUNCS_RET_TIMESTAMP,51.5,0)); // London
$hh = $arr[2];
$mm = $arr[1];
Will give figure out your localtime and daylight saving (BST)
maybe I am wrong, but I think
SUNFUNCS_RET_TIMESTAMP return GMT(0) time
SUNFUNCS_RET_STRING Return local time
SUNFUNCS_RET_DOUBLE Return local time
I use an IP to location database to determine the visitor's approximate latitude and longitude and then serve them a day or night color scheme based on whether it is before civil dawn or dusk. I've had problems when not specifying the timezone, specifically a 1 hour error, so I use GMT.
<?php
date_default_timezone_set("GMT");
function scheme() {
$sunrise = date_sunrise(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
$sunset = date_sunset(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
$now = date("H") + date("i") / 60 + date("s") / 3600;
if ($sunrise < $sunset)
if (($now > $sunrise) && ($now < $sunset)) return "day";
else return "night";
else
if (($now > $sunrise) || ($now < $sunset)) return "day";
else return "night";
}
?>