PHP Velho Oeste 2024

date_sunrise

(PHP 5, PHP 7, PHP 8)

date_sunrise Возвращает время рассвета для заданных дня и местоположения

Внимание

Функция УСТАРЕЛА, начиная с PHP 8.1.0. Полагаться на эту функцию крайне не рекомендуется. Используйте вместо неё функцию date_sun_info().

Описание

date_sunrise(
    int $timestamp,
    int $returnFormat = SUNFUNCS_RET_STRING,
    ?float $latitude = null,
    ?float $longitude = null,
    ?float $zenith = null,
    ?float $utcOffset = null
): string|int|float|false

date_sunrise() возвращает время рассвета для определённых дня (заданного аргументом timestamp) и местоположения.

Список параметров

timestamp

Временная метка (timestamp) дня, для которого определяется время рассвета.

returnFormat

Константы 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.sunrise_zenith

Распространённые углы zenith angles
Угол Описание
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_sunrise()

<?php

/* расчёт времени восхода солнца в Лиссабоне, Португалия
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/

echo date("D M d Y"). ', время восхода солнца : ' .date_sunrise(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);

?>

Вывод приведённого примера будет похож на:

Mon Dec 20 2004, время восхода солнца : 08:54

Пример #2 Нет восхода солнца

<?php
$solstice
= strtotime('2017-12-21');
var_dump(date_sunrise($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>

Результат выполнения приведённого примера:

bool(false)

Смотрите также

  • date_sun_info() - Возвращает массив с информацией о закате/рассвете и начале/окончании сумерек

add a note add a note

User Contributed Notes 3 notes

up
1
nomail at nospam dot com
6 years ago
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
up
0
scottix at gmail dot com
10 years ago
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
);
up
-5
jonathanNO dot kuhnSPAM at gmailNOSPAM dot com
14 years ago
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
To Top