Временные зоны в PHP

По умолчанию интерпретатор PHP использует настройки даты и времени, предоставляемые системой, где размещается веб-сервер, однако данные настройки можно изменить. Это рекомендуется, если сайт ориентирован на пользователей, находящихся в значительно отдалённых странах нежели той, где располагается хостинг, или когда необходимо подстроить какой-либо скрипт под собственные нужды.

В официальном справочнике языка, доступном на русском и десятке других языков, содержится раздел «Функции даты и времени», содержащий полный список связанных с этой темой элементов.

Поддерживаемые зоны

Список, актуальный для восьмой спецификации языка, охватывает следующие территории:

  • Европа;
  • Тихий океан;
  • Атлантика;
  • Азия;
  • Австралия;
  • Индия;
  • Америка;
  • Антарктика;
  • Арктика;
  • прочие, не рекомендуемые для использования и существующие в качестве исправлений ошибок, возникающих при запуске на устаревших ОС.

Задать данные вида «Europe/London», «Europe/Volgograd» можно для функции date_default_timezone_set();, служащей для переопределения параметров времени при выполнении конкретного скрипта, и подобных. Также показатели могут учитываться в ходе проверок с задействованием конструкции if-elseif-else.

Константы

Создателями языка создано несколько заранее установленных констант, одной из которых является DateTime::ATOM (она же DATE_ATOM), выдающая информацию в формате ISO-8601. Более привычный видtimestamp имеет значение,вызванное с помощью DateTime::RFC1123 или DATE_RFC1123.

В версии 5.1.2 введены следующие константы:

  • SUNFUNCS_RET_TIMESTAMP – секунды, прошедшие с 1 января 1970 года и являющиеся предметом «Проблемы 2038 года», вызванной особенностью хранения данных вUNIX-системах;
  • SUNFUNCS_RET_STRING– время в виде «часы:минуты»;
  • SUNFUNCS_RET_DOUBLE – часы в виде десятичной дроби.

В более глобальном, но раннем обновлении, 5.0.0, появились функции date_sunrise(); и date_sunset();, служащие для вывода информации о рассвете и закате для определённого местоположения. Они и поддерживают содержащиеся в списке выше элементы.

Варианты использования

Следующие примеры помогут разобраться с основами работы с данными о времени в PHP.

Переназначение пояса и вывод времени

<?php
$date = «Europe/London»;
date_default_timezone_set($date);
echodate(«H:i:s».» «.»d.m.y»);

Выведутся время и дата в Лондоне, зависящая от момента исполнения скрипта. На момент написания статьи результатом была строка «16:10:55 10.03.21».

Получение данных о закате

<?php
/*
Вычисление времени заката по координатам.
54.6789474577325, 25.275143290542303 -> 54.67 и 25.27 соответственно
Угол зенита: 90 градусов. Примерно тогда Солнце скрывается за горизонтом, но ещё некоторое время продолжает светить.
Часовой пояс: UTC.
*/
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 54.67, 25.27, 90, 0);
echo»Закат в Вильнюсе состоится в «.$sunset.» по UTC»;

Комментарии приведены по ходу программы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *