Description
int
mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
Предепреждение: Обратите внимание на странный
порядок аргументов, отличающийся от порядка аргументов стандартной
функции Unix mktime() и делающий неудобной работу с необязательными
аргументами. Часто при написании скриптов путают порядок аргументов,
что приводит к ошибкам.
Функция возвращает метку времени Unix, соответствующую дате и
времени, заданным аргументами.
Метка времени - это цело число, равное разнице в секундах между
заданной датой/временем и началом Эпохи Unix (The Unix Epoch, 1 января 1970 г).
Аргументы могут быть опущены в порядке справа налево. Опущенные
аргументы считаются равными соответствующим компонентам локальной
даты/времени.
Аргумент is_dst может быть установлен в 1,
если заданной дате соответствует летнее время, 0 в противном случае,
или -1 (значение по умолчанию), если неизвестно, действует ли летнеее
время на заданную дату. В последнем случае PHP пытается определить это
самостоятельно. Это можно привести к неожиданному результату
(который, тем не менее, не будет неверным).
Замечание:
Аргумент is_dst был добавлен в версии 3.0.10.
Функцию mktime() удобно использовать для
выполнения арифметических операций с датами, так как она вычисляет
верные значения при некорректных аргументах. Например, в следующем
примере каждая строка выведет "Jan-01-1998".
Пример 1. Пример использования функции mktime()
<?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)); ?>
|
|
Year может быть двух- или четырехзначным
числом. Значения от 0 до 69 соответствуют 2000-2069, а 70-99
соответствуют 1970-1999 (в большинстве современных систем, где время
представляется 32-битным целым со знаком, допустимыми являются
значения
year между 1901 и 2038).
Windows:
Ни одна из версий Windows не поддерживает отрицательные метки
времени. Поэтому для Windows допустимыми являются значения
year между 1970 и 2038.
Последний день любого месяца можно вычислить как "нулевой" день
следующего месяца. Оба приведенных ниже примера выведут "Последний
день в феврале 2000 г: 29".
Пример 2. Last day of next month
<?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); ?>
|
|
Даты, в которых год, месяц и день равны 0, считаются неверными
(иначе им бы соответствовала дата 30.11.1999, что, согласитесь, было
бы довольно странно).
См. также описание функций date() и time().