(PHP 4, PHP 5, PHP 7, PHP 8)
mktime — Возвращает метку времени Unix для заданной даты
$hour
,$minute
= null
,$second
= null
,$month
= null
,$day
= null
,$year
= null
Функция возвращает метку времени 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 в соответствии с переданными аргументами.
Версия | Описание |
---|---|
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);
?>