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
(PHP 5, PHP 7)
date_sunrise — Returns time of sunrise for a given day and location
$timestamp
[, int $format
= SUNFUNCS_RET_STRING
[, float $latitude
= ini_get("date.default_latitude")
[, float $longitude
= ini_get("date.default_longitude")
[, float $zenith
= ini_get("date.sunrise_zenith")
[, float $gmt_offset
= 0
]]]]] ) : mixed
date_sunrise() returns the sunrise time for a given
day (specified as a timestamp
) and location.
timestamp
The timestamp
of the day from which the sunrise
time is taken.
format
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 integer (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.sunrise_zenith
Angle | Description |
---|---|
90°50' | Sunrise: the point where the sun becomes visible. |
96° | Civil twilight: conventionally used to signify the start of dawn. |
102° | Nautical twilight: the point at which the horizon starts being visible at sea. |
108° | Astronomical twilight: the point at which the sun starts being the source of any illumination. |
gmtoffset
Specified in hours.
The gmtoffset
is ignored, if
format
is
SUNFUNCS_RET_TIMESTAMP
.
Returns the sunrise time in a specified format
on
success lub FALSE
w przypadku niepowodzenia. One potential reason for failure is that the
sun does not rise at all, which happens inside the polar circles for part of
the year.
Każde wywołanie do funkcji date/time spowoduje wygenerowanie E_NOTICE
jeśli strefa czasowa jest nieprawidłowa, lub/i wiadomość E_STRICT
jeśli użyto ustawień systemu lub zmiennej środowiskowej TZ.
Patrz także date_default_timezone_set()
Wersja | Opis |
---|---|
5.1.0 |
Teraz generuje błędy strefy czasowej o poziomie |
Przykład #1 date_sunrise() example
<?php
/* calculate the sunrise time for Lisbon, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/
echo date("D M d Y"). ', sunrise time : ' .date_sunrise(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Powyższy przykład wyświetli coś podobnego do:
Mon Dec 20 2004, sunrise time : 08:54
Przykład #2 No sunrise
<?php
$solstice = strtotime('2017-12-21');
var_dump(date_sunrise($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>
Powyższy przykład wyświetli:
bool(false)
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
If you are working in multiple timezones getting the offset from a date is a little tricky because you need it in hours.
<?php
$time = new DateTime('now', new DateTimeZone('America/Los_Angeles'));
date_sunrise(
$time->getTimestamp(),
SUNFUNCS_RET_TIMESTAMP,
38.4,
-9,
90,
$time->getOffset() / 3600
);
After some searching, I finally found a website that can calculate the sun's zenith. Just look up your city's lat/long (remember, west/south are negative even if it doesn't show where you look up the lat/long) and the time of sunrise/sunset and use this site:
http://solardat.uoregon.edu/cgi-bin/SolarPositionCalculator.cgi
You have to enter in the sunrise/sunset times separately, but it works.
San Diego is:
Lat: 32.73
Long: -117.17
Sunrise Z.: 90.7379
Sunset Z.: 90.8880