mktime
(PHP 4, PHP 5, PHP 7)
mktime — Возвращает метку времени Unix для заданной даты
Описание
$hour
, int|null $minute
= null
, int|null $second
= null
, int|null $month
= null
, int|null $day
= null
, int|null $year
= null
) : int|falseФункция возвращает метку времени Unix, соответствующую дате и времени, переданных в качестве аргументов. Метка времени - это целое число, равное разнице в секундах между заданной датой/временем и началом эпохи Unix (1 января 1970 00:00:00 GMT).
Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.
Вызов mktime() без аргументов устарел. Для получения текущей отметки времени можно использовать 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. Однако, до версии PHP 5.1.0, на некоторых системах этот диапазон был ограничен датами между 1970 и 2038 (например, Windows). -
isDST
-
Данный параметр может быть установлен в 1, если заданной дате соответствует летнее время (DST), 0 - в противном случае, или -1 (значение по умолчанию), если неизвестно, действует ли летнее время на заданную дату. В последнем случае PHP пытается определить это самостоятельно. Это может привести к неожиданному результату (который, тем не менее, не будет неверным). Некоторые даты могут быть неверными, если летнее время применимо к системе, на которой запущен PHP, или параметр
isDST
установлен в 1. Если переход на летнее время происходит, например, в 2:00, все даты между 2:00 и 3:00 станут некорректными и mktime() вернет неопределенное (обычно отрицательное) значение. Некоторые системы (например, Solaris 8) осуществляют переход на летнее время в полночь, так что время 0:30 дня, когда был осуществлен переход на летнее время будет обрабатываться как 23:30 предыдущего дня.Замечание:
Начиная с версии PHP 5.1.0, этот параметр более не рекомендуется к использованию. Вместо этого рекомендуется устанавливать соответствующую временную зону.
Замечание:
Этот параметр был удален в PHP 7.0.0.
Возвращаемые значения
mktime() возвращает временную метку Unix в
соответствии с переданными аргументами.
Если были переданы некорректными аргументы, функция вернет false
.
Ошибки
Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE
,
и/или ошибку уровня E_STRICT
или E_WARNING
при использовании системных
настроек или переменной окружения TZ. Смотрите также date_default_timezone_set()
Список изменений
Версия | Описание |
---|---|
8.0.0 |
hour больше не является необязательным.
|
8.0.0 |
minute , second , month ,
day и year теперь допускают значение null.
|
Примеры
Пример #1 Пример использования функции mktime()
<?php
// Устанавливаем используемую по умолчанию временную зону. Доступно с PHP 5.1
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);
?>
Примечания
До версии PHP 5.1.0, отрицательные временные метки не поддерживались ни под одной известной версией Windows, а также и некоторыми другими системами. Таким образом, диапазон корректных лет был ограничен датами от 1970 до 2038 г.
Смотрите также
- checkdate() - Проверяет корректность даты по григорианскому календарю
- gmmktime() - Возвращает локальную метку времени Unix для времени по Гринвичу
- date() - Форматирует вывод системной даты/времени
- time() - Возвращает текущую метку системного времени Unix