SharePoint Alfresco PHP MySQL
О сайте Контакты
воскресенье, 26 января 2014 г.

Особенности strtotime

В этой статье я расскажу о некоторых особенностях работы с датами в PHP. Например, есть задача: вычислить метку следующего дня, или еще лучше — следующего ближайшего понедельника. Как тут можно поступить? Есть несколько способов, причем, самый очевидный — не всегда значит правильный.

Рассмотрим первый, неправильный способ. Казалось бы, для вычисления даты следующего понедельника можно сделать цикл, в котором прибавлять к метке времени по одному дню, и проверять, соответствует ли дата понедельнику? Очевидно, это глупое решение.

Для рационального решения задач с датами в PHP есть функция strtotime. Из самого ее названия можно понять, что она переводит строку в метку времени. Причем строка может быть написана на естественном языке, что очень удобно. Вот несколько примеров:

// Первый понедельник 2014-го года
$date = strtotime("first monday of january 2014");

// Дата первого дня следующего месяца
$date = strtotime("first day of next month");

// Дата на неделю раньше текущей даты
$date = strtotime("-1 week");

// Дата сейчас
$date = strtotime("now");

Из примеров видно, что не нужно городить всяких циклов с прибавлением или убавлением количества дней. Все оцень просто: указываете команду, и функция вычисляет по ней дату. Вторым аргументом этой функции может быть та метка времени, относительно которой идет отсчет. По умолчанию это «сейчас».

Еще одним преимуществом функции является то, что она автоматически просчитывает переходы на летнее/зимнее время. Можно не беспокоиться, что дата будет неверно вычислена, все заложено уже в PHP

Sergey Lysenko, воскресенье, 26 января 2014 г.

Комментарии: