In the last example, conversion from seconds to Hour, Minutes, Seconds is wrong.
This is the correct verion:
<?php
$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: 13h53m15sdate_sun_info
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
date_sun_info
Референца за `function.date-sun-info.php` со подобрена типографија и навигација.
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 ако сонцето е над соодветниот зенит за целиот ден.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 7.2.0 | Елементот zone од вратениот список сега претставува секунди наместо минути, а неговиот знак е инвертиран. На пример, -120 сега е 7200. |
Примери
ако е овозможен колекторот за отпадоци, date_sun_info() example
<?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";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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);Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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 "Length of day: ",
floor($diff / 3600), "h ",
floor(($diff % 3600) / 60), "s\n";Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Length of day: 13h 56s