(PHP 4, PHP 5)
mktime — Возвращает метку времени Unix для заданной даты
$hour
= date("H")
[, int $minute
= date("i")
[, int $second
= date("s")
[, int $month
= date("n")
[, int $day
= date("j")
[, int $year
= date("Y")
[, int $is_dst
= -1
]]]]]]] )Функция возвращает метку времени Unix, соответствующую дате и времени, заданным аргументами. Метка времени - это целое число, равное разнице в секундах между заданной датой/временем и началом Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT).
Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.
Замечание:
Начиная с версии PHP 5.1, если mktime() вызывается без аргументов, то будет сгенерировано замечание уровня
E_STRICT
. Используйте вместо этого функцию 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).
is_dst
Данный параметр может быть установлен в 1, если заданной дате
соответствует летнее время (DST), 0 в противном случае,
или -1 (значение по умолчанию), если неизвестно, действует
ли летнее время на заданную дату. В последнем случае PHP
пытается определить это самостоятельно. Это можно привести к
неожиданному результату (который, тем не менее, не будет
неверным).
Некоторые даты могут быть неверными, если летнее время применимо
к системе, на которой запущен PHP, или параметр
is_dst
установлен в 1.
Если переход на летнее время происходит, например, в 2:00, все
даты между 2:00 и 3:00 станут некорректными и
mktime() вернет неопределенное (обычно
отрицательное) значение.
Некоторые системы (например, Solaris 8) осуществляют переход
на летнее время в полночь, так что время 0:30 дня, когда был
осуществлен переход на летнее время будет обрабатываться как
23:30 предыдущего дня.
Замечание:
Начиная с версии PHP 5.1.0 этот параметр более не рекомендуется к использованию. Вместо этого рекомендуется устанавливать соответствующую временную зону.
mktime() возвращает временную метку Unix в
соответствии с переданными аргументами.
Если были переданы некорректными аргументы, функция вернет FALSE
(до версии PHP 5.1
возвращалась -1).
Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE
,
и/или ошибку уровня E_STRICT
или E_WARNING
при использовании системных
настроек или переменной окружения TZ. Смотрите также date_default_timezone_set()
Версия | Описание |
---|---|
5.3.0 |
mktime() теперь выбрасывает ошибку уровня
E_DEPRECATED при использовании параметра
is_dst .
|
5.1.0 |
Параметр is_dst теперь считается устаревшим.
Функция теперь возвращает FALSE при ошибке, тогда как раньше
возвращалась -1.
Теперь функция принимает дату с одновременно установленными
в ноль годом, месяцем и днем.
|
5.1.0 |
Если mktime() была вызвана без аргументов,
то будет сгенерировано замечание уровня
E_STRICT . Используйте вместо этого
функцию time().
|
5.1.0 |
Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня |
Пример #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() example
Функцию 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 г.