Какие форматы даты поддерживает функция PHP strtotime ()?

Мне очень нравится функция PHP strtotime (), но руководство пользователя не дает полного описания поддерживаемых форматов дат. Он дает лишь несколько примеров, таких как «10 сентября 2000 года», «+1 неделя 2 дня 4 часа 2 секунды» и «в следующий четверг».

Где я могу найти полное описание?

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

Одно несоответствие, которое я замечаю, это то, что «следующий» не соответствует поведению, описанному в руководстве GNU. Используя strtotime (), «следующий четверг» даст вам тот же результат, что и «четверг», если сегодня не четверг.

Если сегодня четверг, то

  • strtotime («Четверг») == strtotime («сегодня»)
  • strtotime («следующий четверг») == strtotime («сегодня + 7 дней»)

Если сегодня не четверг, то

  • strtotime («Четверг») == strtotime («в следующий четверг»)

Я использую PHP 5.2.6.

Обновить:

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

Вы можете начать отслеживать, что он делает, посмотрев следующий код на C:

http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.c

Поиск PHP_FUNCTION (strtotime)

Также это основной синтаксический анализ регулярных выражений:

http://cvs.php.net/viewvc.cgi/php-src/ext/date/lib/parse_date.re

Удачи

По моему опыту strtotime () может принимать все, что даже отдаленно выглядит как дата. Лучший способ выяснить его границы – создать тестовый скрипт и подключить значения и посмотреть, что делает и не работает.

$input = "Apr 10th"; print(date('Ym-d', strtotime($input))); 

Просто продолжайте изменять переменную $ input и наблюдайте за результатами.

В принципе, все, что датирует создание strtotime, будет анализироваться. За одним исключением у него есть проблемы с форматированием не в американском стиле. Поэтому сохраните формат месяца в формате «День-Год-Год».