Какие форматы даты поддерживает PHP-функция strtotime ()? - PullRequest
4 голосов
/ 18 апреля 2009

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

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

Ответы [ 4 ]

7 голосов
/ 18 апреля 2009

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

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

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

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

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

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

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

Обновление:

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

1 голос
/ 18 апреля 2009

Вы можете начать отслеживать, что он делает, посмотрев на следующий код 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

Удачи

0 голосов
/ 18 апреля 2009

По существу, все, что date может создать strtotime, будет проанализировано. За одним исключением, у него есть проблемы с форматированием не в американском стиле. Поэтому сохраняйте форматирование типа месяц-день-год. ​​

0 голосов
/ 18 апреля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...