Description
int mktime
([ int $hour
[, int $minute
[, int $second
[, int $month
[, int $day
[, int $year
[, int $is_dst
]]]]]]] )
Функция mktime() возвращает FALSE, если аргументы
были неверны (до 5.1.0 в этом случае она возвращала -1).
Аргументы могут быть опущены в порядке справа налево. В этом случае их
значения по умолчанию равны соответствующим компонентам локальной
даты/времени.
Аргумент is_dst
может быть установлен в 1,
если заданной дате соответствует летнее время, 0 в противном случае,
или -1 (значение по умолчанию), если неизвестно, действует ли летнее
время на заданную дату. В последнем случае PHP пытается определить это
самостоятельно. Это можно привести к неожиданному результату
(который, тем не менее, не будет неверным).
Замечание:
Аргумент is_dst
был добавлен в версии 3.0.10.
Начиная с версии 5.1.0 этот параметр более не рекомендуется к
использованию. Вместо этого рекомендуется устанавливать соответствующую
временную зону.
Функцию 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).
Замечание:
Внимание
До PHP 5.1.0 отрицательные метки времени не поддерживались под всеми
системами Windows, а также некоторыми другими. Следовательно,
допустимые значения параметра year
были
между 1970 и 2038.
Последний день любого месяца можно вычислить как "нулевой" день
следующего месяца. Оба приведенных ниже примера выведут "Последний
день в феврале 2000 г: 29".
Пример #2 Последний день следующего месяца
<?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);
?>
См. также date(), time() и
gmmktime().