PHP Conference Nagoya 2025

mktime

(PHP 4, PHP 5, PHP 7, PHP 8)

mktimeПолучает Unix-метку времени для даты

Описание

mktime(
    int $hour,
    ?int $minute = null,
    ?int $second = null,
    ?int $month = null,
    ?int $day = null,
    ?int $year = null
): int|false

Функция возвращает временну́ю метку Unix, которая соответствует заданным аргументам. Метка времени — целое число, которое содержит количество секунд между началом эпохи Unix, которая началась 1 января 1970 00:00:00 GMT, и датой и временем.

Функция присвоит необязательным параметрам, которые не указали или присвоили значение null, текущие значения, которые соответствуют локальным дате и времени.

Внимание

Обратите внимание, что аргументы идут в странном порядке: month, day, year, а не в более рациональном порядке year, month, day.

Вызов функции mktime() без аргументов не поддерживается и вызовет исключение ArgumentCountError. Текущую метку времени возвращает функция time().

Список параметров

hour

Количество часов с начала дня, который определили параметрами month, day и year. Отрицательные значения относятся к часам до полуночи относительно заданного дня. Значения больше 23 определяют час, который соответствует следующему дню или дням.

minute

Количество минут с начала часа, который установили параметром hour. Отрицательные значения относятся к минутам предыдущего часа. Значения больше 59 относятся к минутам, которые соответствуют следующему часу или часам.

second

Количество секунд с начала минуты, которую установили параметром minute. Отрицательные значения относятся к секундам предыдущей минуты. Значения больше 59 относятся к секундам, которые соответствуют следующей минуте или минутам.

month

Количество месяцев с начала текущего года. Значения от 1 до 12 относятся к обычным календарным месяцам заданного года Значения меньше 1 (включая отрицательные значения) относятся к месяцам предыдущего года в обратном порядке, то есть 0 — декабрь, -1 — ноябрь и т. д. Значения больше 12 относятся к месяцу следующего года или лет.

day

Количество дней с начала текущего месяца. Значения от 1 до 28, 29, 30 или 31 (в зависимости от месяца) относятся к обычным дням месяца. Значения меньше 1 (включая отрицательные значения) относятся к дням предыдущего месяца, поэтому 0 — последний день предыдущего месяца, -1 — предпоследний день предыдущего месяца и т. д. Значения, которые превышают количество дней в месяце, относятся ко дню следующего месяца или месяцев.

year

Номер года состоит из двух или четырёх цифр. Значения от 0 до 69 соответствуют 2000-2069 годам, а от 70 до 100 — 1970-2000 годам. В системах с арифметическим типом time_t в виде 32-разрядного целого числа со знаком, как самым распространённым способом представления времени, в допустимый диапазон параметра year входят значения примерно между 1901 и 2038 годами.

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

Функция mktime() возвращает временну́ю метку Unix по заданным аргументам или false, если метка времени не вписывается в целое число PHP.

Список изменений

Версия Описание
8.0.0 Параметр hour теперь обязателен. Чтобы получить временну́ю метку Unix, вызывают функцию time().
8.0.0 Параметры minute, second, month, day и year теперь принимают значение null.

Примеры

Пример #1 Пример базовой работы функции mktime()

<?php

// Устанавливаем часовой пояс по умолчанию
date_default_timezone_set('UTC');

// Выводит: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

// Выводит что-то вроде: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));

?>

Пример #2 Пример использования функции mktime()

Функция mktime() полезна для выполнения арифметических операций и проверки дат, поскольку функция автоматически вычисляет правильные значения для входных аргументов, которые выходят за пределы допустимого диапазона. В следующем примере каждая строка кода создаёт строку «Jan-01-1998».

<?php

echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo
date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo
date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo
date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));

?>

Пример #3 Последний день месяца

Последний день любого месяца получится выразить «нулевым» днём следующего месяца, но не -1 днём. Оба следующих примера создадут строку «Последний день февраля 2000 г.: 29».

<?php

$lastday
= mktime(0, 0, 0, 3, 0, 2000);
echo
'Последний день февраля в 2000 году: ', date('d', $lastday);

$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo
'Последний день февраля в 2000 году: ', date('d', $lastday);

?>

Смотрите также

  • Класс DateTimeImmutable
  • checkdate() - Проверяет корректность даты по григорианскому календарю
  • gmmktime() - Возвращает локальную метку времени Unix для времени по Гринвичу
  • date() - Форматирует метку времени эпохи Unix
  • time() - Возвращает метку времени Unix на основе текущего системного времени

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top