W3docs

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 для работы с датой и временем.

Практика

Практика
Какова функция localtime() в PHP?
Какова функция localtime() в PHP?
Was this page helpful?