What is sunrise php

date_sunrise

This function has been DEPRECATED as of PHP 8.1.0. Relying on this function is highly discouraged. Use date_sun_info() instead.

Description

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() returns the sunrise time for a given day (specified as a timestamp ) and location.

Parameters

The timestamp of the day from which the sunrise time is taken.

returnFormat constants

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

latitude

Defaults to North, pass in a negative value for South. See also: date.default_latitude

Defaults to East, pass in a negative value for West. See also: date.default_longitude

zenith is the angle between the center of the sun and a line perpendicular to earth’s surface. It defaults to date.sunrise_zenith

Common zenith angles

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.

utcOffset

Specified in hours. The utcOffset is ignored, if returnFormat is SUNFUNCS_RET_TIMESTAMP .

Return Values

Returns the sunrise time in a specified returnFormat on success or false on failure. 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.

Errors/Exceptions

Every call to a date/time function will generate a E_WARNING if the time zone is not valid. See also date_default_timezone_set()

Changelog

Version Description
8.1.0 This function has been deprecated in favor of date_sun_info() .
8.0.0 latitude , longitude , zenith and utcOffset are nullable now.

Examples

Example #1 date_sunrise() example

/* 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 );

The above example will output something similar to:

Mon Dec 20 2004, sunrise time : 08:54

Example #2 No sunrise

$solstice = strtotime ( ‘2017-12-21’ );
var_dump ( date_sunrise ( $solstice , SUNFUNCS_RET_STRING , 69.245833 , — 53.537222 ));
?>

The above example will output:

Источник

date_sunrise

mixed date_sunrise ( int $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 ]]]]] )

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

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

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

format constants

константа описание пример
SUNFUNCS_RET_STRING тип возвращаемого результата string 16:46
SUNFUNCS_RET_DOUBLE тип возвращаемого результата float 16.78243132
SUNFUNCS_RET_TIMESTAMP тип возвращаемого результата integer (временная метка) 1095034606

По умолчанию в Северном полушарии, для Южного передается отрицательная величина. См. также date.default_latitude.

По умолчанию восточная, для указания западной долготы передается отрицательная величина. См. также date.default_longitude.

По умолчанию: date.sunrise_zenith

Возвращаемые значения

Возвращает время восхода солнца в заданном формате format или FALSE в случае возникновения ошибки.

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()

Список изменений

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

Примеры

Пример #1 Пример использования date_sunrise()

/* расчет времени восхода солнца в Лиссабоне, Португалия
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

Источник

date_sun_info

Возвращает массив в случае успешного выполнения или false в случае возникновения ошибки. Структура массива подробно описана в следующем списке:

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 , если солнце находится выше соответствующего зенита в течение всего дня.

Список изменений

Версия Описание
7.2.0 Расчёт был исправлен с учётом местной полуночи вместо местного полудня, что несколько изменяет результаты.

Примеры

Пример #1 Пример использования date_sun_info()

$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 Полярная ночь с некоторой обработкой

$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 Полуночное солнце (Тромсё, Норвегия)

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

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 Вычисление продолжительности дня (Киев)

$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() — Возвращает время захода солнца для заданных дня и местоположения

User Contributed Notes 1 note

In the last example, conversion from seconds to Hour, Minutes, Seconds is wrong.
This is the correct verion:

$si = date_sun_info ( strtotime ( ‘2022-08-26’ ), 50.45 , 30.52 );
$diff = $si [ ‘sunset’ ] — $si [ ‘sunrise’ ]; # $diff is measured in seconds.
echo «Length of day: » ,
floor ( $diff / 3600 ), «h» ,
floor (( $diff % 3600 ) / 60 ), «m» ,
floor ( $diff % 60 ), «s\n» ;
?>

Output:
Length of day: 13h53m15s

Оцените статью