Учебник PHP

         

mktime

(PHP 3, PHP 4)

mktime - получает UNIX timestamp даты.

Описание

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

Предупреждение!: Обратите внимание на необычный порядок аргументов, который отличается от порядка аргументов в обычном вызове UNIX mktime() и который не выстраивает параметры справа налево (см. далее). Обычной ошибкой является смешивание этих значений в скрипте.

Возвращает Unix timestamp, соответствующий заданным аргументам. Этот timestamp является длинным целым/long integer, содержащим количество секунд между началом Unix Epoch (January 1 1970) и специфицированным временем.

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

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

Примечание: is_dst был введён в версии 3.0.10.

mktime() используется для перевода даты в арифметическое значение и проверки, поскольку


автоматически будет вычисляться корректное значение для ввода вне диапазона значений. Например, каждая из следующих строк произведёт строку "Jan-01-1998".
Пример 1. mktime()
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 может быть двух- или 4-значным значением со значениями 0-69, отображающимися как 2000-2069, и 70-99 - как 1970-1999 (в системах, где time_t это 32-битное знаковое целое, как в большинстве современных систем, правильным диапазоном year будет примерно 1902-2037).

Последний день данного месяца может быть выражен как "0" следующего месяца, а не как -1. Оба следующих примера дадут строку "The last day in Feb 2000 is: 29".
Пример 2. Последний день следующего месяца
$lastday = mktime (0,0,0,3,0,2000);
echo strftime ("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime (0,0,0,4,-31,2000);
echo strftime ("Last day in Feb 2000 is: %d", $lastday);

Дата с year, month и day, равными нулю, рассматривается как недопустимая.

См. также date() и time().
Содержание раздела