(PHP 4, PHP 5)

mktime — Возвращает метку времени для заданной даты

Description

int mktime ( [int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst]]]]]]] )

Функция возвращает метку времени Unix, соответствующую дате и времени, заданным аргументами. Метка времени - это целое число равное разнице в секундах между заданной датой/временем и началом Эпохи Unix (The Unix Epoch, 1 января 1970 г).

Функция mktime() возвращает FALSE, если аргументы были неверны (до 5.1.0 в этом случае она возвращала -1).

Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.

Аргумент is_dst может быть установлен в 1, если заданной дате соответствует летнее время, 0 в противном случае, или -1 (значение по умолчанию), если неизвестно, действует ли летнее время на заданную дату. В последнем случае PHP пытается определить это самостоятельно. Это можно привести к неожиданному результату (который, тем не менее, не будет неверным).

Замечание: Аргумент is_dst был добавлен в версии 3.0.10. Начиная с версии 5.1.0 этот параметр более не рекомендуется к использованию. Вместо этого рекомендуется устанавливать соответствующую временную зону.

Функцию mktime() удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет "Jan-01-1998".


Пример использования функции 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".

Последний день следующего месяца

<?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().