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 — Возвращает время захода солнца для заданных дня и местоположения
Функция УСТАРЕЛА, начиная с PHP 8.1.0. Полагаться на эту функцию крайне не рекомендуется. Используйте вместо неё функцию date_sun_info().
$timestamp
,$returnFormat
= SUNFUNCS_RET_STRING
,$latitude
= null
,$longitude
= null
,$zenith
= null
,$utcOffset
= null
date_sunset() возвращает время захода солнца для
определённых дня (заданного аргументом timestamp
)
и местоположения.
timestamp
Временная метка (timestamp
) дня, для которого
определяется время захода солнца.
returnFormat
константа | описание | пример |
---|---|---|
SUNFUNCS_RET_STRING | тип возвращаемого результата string | 16:46 |
SUNFUNCS_RET_DOUBLE | тип возвращаемого результата float | 16.78243132 |
SUNFUNCS_RET_TIMESTAMP | тип возвращаемого результата int (временная метка) | 1095034606 |
latitude
По умолчанию в Северном полушарии, для Южного передаётся отрицательная величина. Смотрите также date.default_latitude.
longitude
По умолчанию восточная, для указания западной долготы передаётся отрицательная величина. Смотрите также date.default_longitude.
zenith
zenith
- это угол между центром Солнца и линией,
перпендикулярной поверхности Земли. По умолчанию
date.sunset_zenith
Угол | Описание |
---|---|
90°50' | Восход солнца: точка, где Солнце становится невидимым. |
96° | Гражданские сумерки: обычно используются для обозначения конца заката. |
102° | Навигационные сумерки: точка, в которой горизонт становится невидимым с моря. |
108° | Астрономические сумерки: точка, в которой Солнце заканчивает быть источником любого освещения. |
utcOffset
Задаётся в часах.
utcOffset
игнорируется, если
returnFormat
- SUNFUNCS_RET_TIMESTAMP
.
Возвращает время захода солнца в заданном формате
returnFormat
или false
в случае возникновения ошибки. Одна из возможных причин неудачного выполнения - солнце не поднимается над горизонтом вообще, что происходит внутри полярных кругов в течение части года.
Каждый вызов к функциям даты/времени при неправильных настройках часового пояса сгенерирует ошибку уровня E_WARNING
,
если часовой пояс некорректный. Смотрите также date_default_timezone_set()
Версия | Описание |
---|---|
8.1.0 | Функция объявлена устаревшей, используйте вместе неё date_sun_info(). |
8.0.0 |
latitude , longitude ,
zenith и utcOffset теперь допускают значение null.
|
Пример #1 Пример использования date_sunset()
<?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"). ', время захода солнца : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);
?>
Вывод приведённого примера будет похож на:
Mon Dec 20 2004, время захода солнца : 18:13
Пример #2 Нет заката
<?php
$solstice = strtotime('2017-12-21');
var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>
Результат выполнения приведённого примера:
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";
}
?>