W3docs

getdate()

Функция PHP getdate(): синтаксис, параметры, ассоциативный array и примеры работы с датами и временными метками.

Введение

Функция PHP getdate() разбивает дату на отдельные составляющие — год, месяц, день, час, название дня недели и другие — и возвращает их в виде ассоциативного array. По умолчанию она описывает текущее местное время, но вы можете передать любую Unix-временну́ю метку, чтобы описать другой момент.

Unix-временна́я метка — это целое число, представляющее количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC («эпоха Unix»). Такие метки возвращают функции time(), mktime() и strtotime(), а getdate() превращает их в удобочитаемый набор значений.

На этой странице рассматриваются синтаксис, все ключи возвращаемого array, примеры с возможностью запуска, а также сравнение getdate() с современным классом DateTime.

Синтаксис и параметры

Синтаксис getdate() выглядит следующим образом:

getdate(int $timestamp = time()): array

Единственный необязательный параметр $timestamp — это Unix-временна́я метка для описания. Если он не передан, getdate() использует time() — текущий момент. Результат соответствует настроенному часовому поясу (см. date_default_timezone_set() или параметр date.timezone в php.ini), поэтому задавайте часовой пояс, если нужны согласованные результаты на разных серверах.

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

getdate() возвращает ассоциативный array, описывающий переданную временну́ю метку. Ниже приведены все ключи:

КлючЗначение
"seconds"Секунды (0–59)
"minutes"Минуты (0–59)
"hours"Часы (0–23)
"mday"День месяца (1–31)
"wday"День недели (0–6, 0 = воскресенье)
"mon"Месяц (1–12)
"year"Год (например, 2023)
"yday"День года (0–365)
"weekday"Полное название дня недели (например, "Monday")
"month"Полное название месяца (например, "January")
"0"Unix-временна́я метка (секунды с 1 янв. 1970)
"zone"Смещение часового пояса в секундах от GMT

Примечание: ключ "0" (сырая временна́я метка) имеет тип integer; остальные ключи также содержат integer, кроме "weekday" и "month" — это string. Ключ "is_dst" был объявлен устаревшим в PHP 7.0 и удалён в PHP 8.0.

Использование и примеры

Форматирование текущей даты

Вызовите getdate(), сохраните результат и обращайтесь к нужным ключам:

php— editable, runs on the server

Результат будет примерно таким: Today is Thursday, March 3, 2023.

Описание конкретной временно́й метки

Передайте Unix-временну́ю метку, чтобы описать момент, отличный от текущего. Здесь используется фиксированная метка для воспроизводимого вывода:

<?php

// 2021-12-25 00:00:00 UTC
$date = getdate(1640390400);

echo $date['weekday'] . ", " . $date['mday'] . " " . $date['month'] . " " . $date['year'] . PHP_EOL;
echo "Day " . $date['yday'] . " of the year, hour " . $date['hours'] . PHP_EOL;

При использовании часового пояса UTC будет выведено:

Saturday, 25 December 2021
Day 358 of the year, hour 0

Создание временно́й метки и последующее её разбиение

getdate() естественно сочетается с mktime(), которая строит временну́ю метку из отдельных компонентов:

<?php

// mktime(hour, minute, second, month, day, year)
$timestamp = mktime(9, 30, 0, 7, 4, 2024);
$parts = getdate($timestamp);

echo "{$parts['weekday']} at {$parts['hours']}:{$parts['minutes']}";

Будет выведено Thursday at 9:30.

getdate() и класс DateTime

getdate() удобна для быстрых единоразовых обращений, но для арифметики с датами, сравнения или работы с часовыми поясами лучше использовать объектно-ориентированный класс DateTime:

  • DateTime безопасно выполняет арифметику с датами (->add(), ->sub(), ->diff()) через границы месяцев и лет.
  • Он содержит явный часовой пояс, что исключает неожиданности из-за глобального значения по умолчанию.
  • Он форматирует вывод с помощью date-format вместо ручной конкатенации строк.

Используйте getdate(), когда нужно получить лишь несколько полей из временно́й метки; используйте DateTime, когда требуется манипулировать датами или сравнивать их.

Заключение

getdate() превращает Unix-временну́ю метку в именованный ассоциативный array, обеспечивая быстрый доступ к году, месяцу, дню недели или любому другому компоненту даты. Для отображения и простых запросов она идеальна; для арифметики с датами и логики с учётом часовых поясов предпочтительнее класс DateTime.

Практика

Практика
Что делает функция PHP getdate()?
Что делает функция PHP getdate()?
Was this page helpful?