date_sun_info
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
date_sun_info —
Возвращает массив с информацией о закате и восходе Солнца, и начале и окончании сумерек
Список параметров
timestamp
-
Метка Unix-времени.
latitude
-
Широта в градусах.
longitude
-
Долгота в градусах.
Возвращаемые значения
Функция возвращает массив, подробную информацию о структуре которого содержит следующий список:
sunrise
-
Метка времени восхода Солнца, когда угол зенита равен 90°35'.
sunset
-
Метка времени заката Солнца, когда угол зенита равен 90°35'.
transit
-
Метка времени кульминации Солнца — прохождения зенита, или наивысшей точки над горизонтом.
civil_twilight_begin
-
Начало утренних гражданских сумерек, когда угол зенита равен 96°.
Утренние гражданские сумерки заканчиваются в момент восхода Солнца —
sunrise.
civil_twilight_end
-
Конец вечерних гражданских сумерек, когда угол зенита равен 96°.
Вечерние гражданские сумерки начинаются в момент заката Солнца —
sunset.
nautical_twilight_begin
-
Начало навигационного рассвета, когда угол зенита равен 102°.
Навигационный рассвет заканчивается в момент начала гражданского рассвета —
civil_twilight_begin.
nautical_twilight_end
-
Конец навигационного заката, когда угол зенита равен 102°.
Навигационный закат начинается в момент окончания вечерних гражданских сумерек —
civil_twilight_end.
astronomical_twilight_begin
-
Начало астрономического рассвета, когда угол зенита равен 108°.
Астрономический рассвет заканчивается в момент начала навигационного рассвета —
nautical_twilight_begin.
astronomical_twilight_end
-
Конец астрономического заката, когда угол зенита равен 108°.
Астрономический закат начинается в момент окончания навигационного заката —
nautical_twilight_end.
Функция устанавливает для элементов массива следующие значения: а) метку Unix-времени,
б) значение false, если Солнце в течение всего дня не достигает угла зенита для события,
или в) значение true, если Солнце в течение всего дня остаётся выше угла зенита, который соответствует событию.
Примеры
Пример #1 Пример работы функции date_sun_info()
<?php
$sun_info = date_sun_info(strtotime("2006-12-12"), 31.7667, 35.2333);
foreach ($sun_info as $key => $val) {
echo "$key: " . date("H:i:s", $val) . "\n";
}
Результат выполнения приведённого примера:
sunrise: 05:52:11
sunset: 15:41:21
transit: 10:46:46
civil_twilight_begin: 05:24:08
civil_twilight_end: 16:09:24
nautical_twilight_begin: 04:52:25
nautical_twilight_end: 16:41:06
astronomical_twilight_begin: 04:21:32
astronomical_twilight_end: 17:12:00
Пример #2 Пример обработки результатов в дату внутри периода полярной ночи
<?php
$tz = new \DateTimeZone('America/Anchorage');
$si = date_sun_info(strtotime("2022-12-21"), 70.21, -148.51);
foreach ($si as $key => $value) {
echo
match ($value) {
true => 'always',
false => 'never',
default => date_create("@{$value}")->setTimeZone($tz)->format( 'H:i:s T' ),
},
": {$key}",
"\n";
}
Результат выполнения приведённого примера:
never: sunrise
never: sunset
12:52:18 AKST: transit
10:53:19 AKST: civil_twilight_begin
14:51:17 AKST: civil_twilight_end
09:01:47 AKST: nautical_twilight_begin
16:42:48 AKST: nautical_twilight_end
07:40:47 AKST: astronomical_twilight_begin
18:03:49 AKST: astronomical_twilight_end
Пример #3 Пример результатов в дату внутри периода полярного дня в Тромсё, Норвегия
<?php
$si = date_sun_info(strtotime("2022-06-26"), 69.68, 18.94);
print_r($si);
Результат выполнения приведённого примера:
Array
(
[sunrise] => 1
[sunset] => 1
[transit] => 1656240426
[civil_twilight_begin] => 1
[civil_twilight_end] => 1
[nautical_twilight_begin] => 1
[nautical_twilight_end] => 1
[astronomical_twilight_begin] => 1
[astronomical_twilight_end] => 1
)
Пример #4 Пример вычисления продолжительности дня в Киеве
<?php
$si = date_sun_info(strtotime('2022-08-26'), 50.45, 30.52);
$diff = $si['sunset'] - $si['sunrise'];
echo "Продолжительность дня: ",
floor($diff / 3600), " ч. ",
floor(($diff % 3600) / 60), " сек.\n";
Результат выполнения приведённого примера:
Продолжительность дня: 13 ч. 56 сек.
Смотрите также
- date_sunrise() - Возвращает время рассвета для заданных дня и местоположения
- date_sunset() - Возвращает время захода солнца для заданных дня и расположения