функция php strtotime - PullRequest
       9

функция php strtotime

0 голосов
/ 23 июля 2011

Я использую функцию PHP strtotime для преобразования даты из одного формата в другой. У меня есть следующее

$date = "12-22-2011";

 echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 1970-01-01
// But when i replace "-"  with "/" I get proper output
$date = "12/22/2011";

echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 2011-12-22 

Почему так?или есть какая-либо другая функция, которая принимает что-либо и конвертирует в правильный формат даты?

Ответы [ 2 ]

4 голосов
/ 23 июля 2011

Из документации strtotime :

Даты в форматах m / d / y или d-m-y устраняются путем анализа разделителя между различными компонентами: если разделитель является косой чертой (/), то предполагается, что используется американский m / d / y; тогда как если разделителем является тире (-) или точка (.), то предполагается, что используется европейский формат d-m-y.

В сущности, предполагается, что даты переносов обозначены как d-m-y, а не m-d-y.

Для индивидуального анализа используйте DateTime::createFromFormat().

2 голосов
/ 23 июля 2011

Использование формата, такого как dd-mm-yyyy или mm-dd-yyyy, не совсем безопасно: strtotime() не может точно знать, какой из них вы использовали (например, 06-11-2011, например: это в июнеили в ноябре?) .

С strtotime() вам, как правило, лучше использовать формат yyyy-mm-dd.


Если вы хотите проанализировать дату вопределенный, известный формат, вы должны использовать DateTime::createFromFormat() - обратите внимание, что он доступен только для PHP> = 5.3.

...