localtime()
localtime() — встроенная функция PHP, преобразующая Unix-временную метку в массив значений локального времени.
Предупреждение:
localtime()была объявлена устаревшей в PHP 7.0 и удалена в PHP 8.0. Она недоступна в современном PHP. Для нового кода используйте классDateTimeилиdate()совместно сdate_default_timezone_set(). Приведённые ниже примеры сохранены для разработчиков, поддерживающих код на PHP 5.x/7.x.
localtime() была встроенной функцией PHP, разбивающей Unix-временную метку на отдельные компоненты локальных даты и времени — секунды, минуты, часы, день, месяц, год и т.д. Она повторяла поведение функции localtime() из стандартной библиотеки C и возвращала массив из 9 элементов, а не отформатированную строку, что было удобно при необходимости читать или вычислять отдельные поля (например, «сейчас выходной день?»), а не выводить дату.
Поскольку функция возвращала локальное время, результат зависел от настроенного на сервере часового пояса. Чтобы вывод был предсказуемым на разных машинах, задавайте часовой пояс явно с помощью date_default_timezone_set() перед её вызовом.
Синтаксис
<?php
localtime(int $timestamp = time(), bool $associative = false): arrayПараметр timestamp — Unix-временная метка для преобразования (по умолчанию принимает текущее время через time()). associative — необязательный boolean, определяющий, будет ли возвращаемый массив индексирован по имени или по позиции.
Индексированный (по умолчанию) массив
Если associative равен false или не указан, массив индексируется числово и содержит следующие значения по порядку:
0: Секунды (0–59).1: Минуты (0–59).2: Часы (0–23).3: День месяца (1–31).4: Месяц (0–11, где 0 — январь).5: Лет с 1900 года.6: День недели (0–6, где 0 — воскресенье).7: День года (0–365).8: Действует ли летнее время (1— да,0— нет,-1— неизвестно).
Важно: Два поля легко перепутать. Индекс месяца 4 начинается с нуля (
0= январь,11= декабрь), поэтому для получения читаемого номера месяца прибавьте1. Год (индекс 5) считает годы с 1900, поэтому прибавьте1900, чтобы получить календарный год.
Ассоциативный массив
Если associative равен true, ключи массива называются так же, как поля структуры struct tm в языке C, а не числами — это делает результат самодокументируемым:
array(
'tm_sec' => ..., // seconds (0-59)
'tm_min' => ..., // minutes (0-59)
'tm_hour' => ..., // hours (0-23)
'tm_mday' => ..., // day of the month (1-31)
'tm_mon' => ..., // month (0-11)
'tm_year' => ..., // years since 1900
'tm_wday' => ..., // day of the week (0-6, Sunday = 0)
'tm_yday' => ..., // day of the year (0-365)
'tm_isdst' => ..., // daylight saving flag (1, 0, or -1)
)Примеры
<?php
// Get the current local time
$now = time();
$localtime = localtime($now);
print_r($localtime);
// Get the local time for a specific Unix timestamp
$timestamp = 1646563200; // March 5, 2022, 12:00:00 AM UTC
$localtime = localtime($timestamp);
print_r($localtime);
// Get the local time as an associative array
$now = time();
$localtime = localtime($now, true);
echo "The current year is " . ($localtime['tm_year'] + 1900);Эти примеры показывают, как можно использовать localtime() для преобразования Unix-временных меток в значения локального времени и считывания отдельных полей по мере необходимости.
Современная замена
Поскольку localtime() удалена в PHP 8, рекомендуемый способ разбить временную метку на части — getdate() (которая уже возвращает удобный ассоциативный массив с полями mon, year, wday и т.д.) или объектно-ориентированный DateTime:
<?php
date_default_timezone_set('UTC');
$parts = getdate(1646438400); // 2022-03-05 00:00:00 UTC
echo $parts['mday'] . '-' . $parts['mon'] . '-' . $parts['year']; // 5-3-2022
$dt = new DateTime('@1646438400');
echo $dt->format('Y-m-d H:i:s'); // 2022-03-05 00:00:00В отличие от localtime(), getdate() сразу даёт year и mon (без арифметики +1900 или +1), а DateTime позволяет форматировать даты или выполнять вычисления с ними без манипуляций с индексами массива.
Смотрите также
getdate()— поддерживаемая замена, возвращающая именованный массив даты.mktime()— создание временной метки из отдельных компонентов локального времени (обратная операция).strtotime()— разбор строки с человекочитаемой датой в временную метку.- PHP Date and Time — обзор инструментов PHP для работы с датой и временем.