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)
date_sunset — Returns time of sunset for a given day and location
$timestamp
, int $returnFormat
= SUNFUNCS_RET_STRING
, float|null $latitude
= null
, float|null $longitude
= null
, float|null $zenith
= null
, float|null $utcOffset
= 0
) : string|int|float|false
date_sunset() returns the sunset time for a given
day (specified as a timestamp
) and location.
timestamp
The timestamp
of the day from which the sunset
time is taken.
returnFormat
constant | description | example |
---|---|---|
SUNFUNCS_RET_STRING | returns the result as string | 16:46 |
SUNFUNCS_RET_DOUBLE | returns the result as float | 16.78243132 |
SUNFUNCS_RET_TIMESTAMP | returns the result as int (timestamp) | 1095034606 |
latitude
Defaults to North, pass in a negative value for South. See also: date.default_latitude
longitude
Defaults to East, pass in a negative value for West. See also: date.default_longitude
zenith
zenith
is the angle between the center of the sun
and a line perpendicular to earth's surface. It defaults to
date.sunset_zenith
Angle | Description |
---|---|
90°50' | Sunset: the point where the sun becomes invisible. |
96° | Civil twilight: conventionally used to signify the end of dusk. |
102° | Nautical twilight: the point at which the horizon ends being visible at sea. |
108° | Astronomical twilight: the point at which the sun ends being the source of any illumination. |
utcOffset
Specified in hours.
The utcOffset
is ignored, if
returnFormat
is
SUNFUNCS_RET_TIMESTAMP
.
Fiecare apel al unei funcții de dată/oră va genera o E_NOTICE
dacă zona orară nu este validă și/sau un mesaj E_STRICT
sau E_WARNING
dacă se utilizează setările
sistemului sau variabila de mediu TZ. Vedeți de asemenea
date_default_timezone_set()
Returns the sunset time in a specified returnFormat
on
success sau false
în cazul eșecului. One potential reason for failure is that the
sun does not set at all, which happens inside the polar circles for part of
the year.
Versiune | Descriere |
---|---|
8.0.0 |
latitude , longitude ,
zenith and latitude are nullable now.
|
Example #1 date_sunset() example
<?php
/* calculate the sunset time for Lisbon, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/
echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Exemplul de mai sus va afișa ceva similar cu:
Mon Dec 20 2004, sunset time : 18:13
Example #2 No sunset
<?php
$solstice = strtotime('2017-12-21');
var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>
Exemplul de mai sus va afișa:
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";
}
?>