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 |
latitudeDefaults to North, pass in a negative value for South. See also: date.default_latitude
longitudeDefaults 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";
}
?>