Время и дата в php

Эта статья представляет собой собрание нескольких полезных советов по манипулированию датой и временем в PHP.

Для начала разберемся с установкой временной зоны. Для этого всего лишь необходимо воспользоваться функцией

bool date_default_timezone_set ( string $timezone_identifier);

Список временных зон (параметров для вышеописанной функции) доступен на официальном сайте PHP. Итак, для того чтобы установить нужную нам временную зону, необходимо вызвать функцию date_default_timezone_set в начале исполняемого скрипта.

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

string date_default_timezone_get  ( void  );

О сравнении двух дат я уже упоминал ранее. Далее рассмотрим вычитание и сложение даты и времени или как определить какая дата и время были N дней X часов назад!? 🙂

Года полтора назад встречал “интересное” решение. Некий разработчик загнал в массив соответствия “номер месяца”=>”количество дней”, затем парсил текущую дату и “вручную” отнимал или прибавлял количество дней, часов, минут, секунд.  Описывать подробно этот алгоритм не буду, так как не привык изобретать велосипед. Предлагаю “формулу” гораздо проще:

# $sec - разница в секундах с текущим временем;
# $min - разница в минутах с текущим временем;
# $hour - разница в часах с текущим временем;
# $days - разница в днях с текущим временем;
$need_date = date ("Y-m-d H:i:s", time()+( $sec + 60*($min + 60*($hour + 24*$day))));

Где “Y-m-d H:i:s” всего лишь шаблон времени, которое мы получим в текстовом формате.

Для тех, кто хочет узнать не будущее, а прошлое время – необходимо заменить вот этот плюс … time()+( $sec … на минус.

На этой оптимистической ноте заканчиваю описание. Остальные возможности PHP предлагаю рассмотреть самостоятельно на официальном сайте php.net в качестве домашнего задания.

2 Responses to “Время и дата в php”

  1. Roman says:

    Есть замечательная функция strtotime. Вот как решается задача время N дней X часов назад, при N = 2, X = 3 например

    echo date(“Y-m-d H:i:s”, strtotime(“-2 day – 3 hours”));

  2. Mihalytch says:

    Только на ее выполнение тратиться всего в два раза больше времени.

Leave a Reply




*