strtotime

(PHP 3 >= 3.0.12, PHP 4, PHP 5)

strtotime - Преобразует текстовое представление даты на английском языке в метку времени Unix

Описание

int strtotime ( string time [, int now] )

Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен. В случае ошибки возвращается -1.

Функция strtotime() использует GNU формат даты Date Input Formats, где описывается синтаксис аргумента time.

Проверить работу функции strtotime:

time=
now=

Функция strtotime() может распознавать следующие слова и сокращения.

  • Название месяцев: 12 месяцев и соответствующие сокращения: Январь - January, Февраль - February, Март - March, Апрель - April, Май - May, Июнь - June, Июль - July, Август - August, Сентябрь - September, Октябрь - October, Ноябрь - November, Декабрь - December.
  • Название дней недели: 7 дней и соответствующие сокращения:Понедельник - Monday, Вторник - Tuesday, Среда - Wednesday, Четверг - Thursday, Пятница - Friday, Суббота - Saturday, Воскресенье - Sunday.
  • Название единиц времени: year (год), month (месяц), fortnight (две недели), week (неделя), day (день), hour (час), minute (минута), second (секунда), am (до полудня), рт (после полудня).
  • Некоторые английские слова: ago (тому назад), now (сейчас), last (длиться), next (следующий); this (этот), tomorrow (завтра), yesterday (вчера).
  • Знаки "плюс" и "минус".
  • Все числа.
  • Временные зоны: например, gmt (Greenwich Mean Time — среднее время по Гринвичу) или pdt (Pacific Daylight Time — дневное тихоокеанское время).
Пример 1. Пример использования функции strtotime()
echo strtotime("now");
echo strtotime("22.01.1971 10:11:36");
echo strtotime("10 September 2000");
echo strtotime("+1 day");
echo strtotime("+1 week");
echo strtotime("+1 week 2 days 4 hours 2 seconds");
echo strtotime("next Thursday");
echo strtotime("last Monday");
echo strtotime('Monday this week');
echo strtotime('first day');
echo strtotime('last day next month');
echo strtotime('last day last month');
echo strtotime('2009-12 last day'); // это не сработает, если в обратном порядке год и месяц
echo strtotime('2009-03 last day');
echo strtotime('2009-03');
echo strtotime('last day of march 2009');
echo strtotime('last day of march');
echo strtotime('yesterday 14:00');
echo date("d.m.Y",strtotime("first day of previous month")); // первый день прошлого месяца
echo date("d.m.Y",strtotime("last day of previous month"));  // последний день прошлого месяца
echo date("d.m.Y",strtotime("first day of this month")); // первый день текущего месяца
echo date("d.m.Y",strtotime("first day of next month")); // первый день следующего месяца
echo date('Y-m-d h:i:s',strtotime("-18 hours"));
echo strtotime("tomorrow"); # 24 часа от сегодня
echo strtotime("now + 24 hours");
echo strtotime("last Saturday");
echo strtotime("8pm + 3 days");
echo strtotime("2 weeks ago"); # две недели назад
echo strtotime("next year gmt"); # на один год вперед
echo strtotime ("tomorrow 4am"),
echo strtotime( date("Y-01-01") );  // начало года
echo strtotime( "next day 00:00" );  // начало следующего дня
Пример 2. Проверка ошибок
$str = 'Not Good';
if (($timestamp = strtotime($str)) === -1) {
    echo "Строка ($str) недопустима";
} else {
    echo "$str == " .date('l dS of F Y h:i:s A', $timestamp);
}

Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038. Не все платформы поддерживают отрицательные метки времени, поэтому даты ранее 1 января 1970 г. не поддерживаются в Windows, некоторых версиях Linux и некоторых других операционных системах.

Замечание: GMT формат с помощью strtotime преобразуется некорректно:

$strtotime = strtotime("Tue, 21 May 2013 09:10:30 GMT");
echo date("Y-m-d H:i:s", $strtotime),PHP_EOL;

$strtotime = DateTime::createFromFormat("D, d M Y g:i:s O", "Tue, 21 May 2013 09:10:30 GMT");
echo $strtotime->format("Y-m-d H:i:s");
2013-05-21 11:10:30 <- strtotime 2013-05-21 09:10:30 <- datetime

Смотрите также: Работа с датой и временем в PHP

Все функции строки
Все функции дата
Описание на ru2.php.net
Описание на php.ru