Руководство по PHP
Пред. |  | След.

# mktime

(PHP 3, PHP 4, PHP 5)

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

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

Пред. | Начало | След.
microtime | Уровень выше | strftime