Оглавление

Значение временной метки

Для того чтобы узнать значение временной метки для нужной даты, в РНР есть готовая функция mktime, которая рассчитывает его на основе заданной даты и времени.


Порядок аргументов следующий: час, минуты, секунды, месяц, день и год. В примере ниже переменной $timestamp присваивается значение временной метки, которое соответствует 25 декабрю 2001 года в 8 часов утра:

 

$timestamp = mktime(8, 0, 0, 12, 25, 2001);


Формат временной метки Unix начинается с 1 января 1970 года в полночь по GMT. Функция mktime возвращает значение временной метки на основе часового пояса, который установлен на Web-сервере. Например, mktime с одинаковыми аргументами для Техаса вернет значение временной метки на 3600 больше, чем для компьютера в Нью-Йорке.

 

 

Безопасное дневное время
Если формат временной метки используется для хранения даты, то три первых аргумента mktime влияют на значение только в полночь, когда время может изменить дату.
Например, переводя часы на час назад и добавив при этом к значению временной метки 86 400 секунд, получим прибавку в два дня. Чтобы этого избежать, лучше использовать полдень вместо полночи.

 

 

Среднее время по гринвичскому меридиану
Функция gmmktinie возвращает время в формате временной метки относительно GMT (Лондонское время, где используется безопасное дневное время).

 

 

функция mktime — нестрогая и позволяет вводить бесчленные аргументы.  Например,  несуществующий день месяца. Если попытаться узнать значение временной метки 29 февраля в невисокосном году, на выходе получим значение для 1 марта:

 

echo date("d/m/Y", mktime (12, 0, 0, 2, 29, 2003));


Это   позволяет   выполнять   различные   арифметические операции с датой и временем. В примере ниже рассчитывается и выводится дата и время для 37 часов после полудня 30 декабря 2001 года:


$time = mktime(12 + 37, 0, 0, 12, 30, 2001);
echo date("d/m/Y H:i:s", $time);

Просто прибавляя нужное значение к одному из аргументов  в mktime,  можно смещать искомое  значение временной метки. На выходе получим следующий вид для даты и времени:


01/01/2002 01:00:00

 

В этой дате корректно сместились все значения: день, месяц, год и время. Здесь учитывается то, что декабрь последний месяц в году, и количество дней в нем.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити