PHP 8.3.4 Released!

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.

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

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
strftime("Последний день февраля 2000 г.: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo
strftime("Последний день февраля 2000 г.: %d", $lastday);
?>

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

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top