2013-10-07 2 views
1

Я использую функцию PHP StrToTime (дата формат Day, month and two digit year, with dots or tabs ДМГ от Doc: http://www.php.net/manual/en/datetime.formats.date.php) и нашел проблему:PHP StrToTime вернуть неправильный штамп времени

От php.net например StrToTime ("30.6.08") -> 1214773200 -> Sun, 29 Jun 2008 21:00:00 GMT (обратное преобразование справа)

другой вариант strtotime ("24.10.13") -> 1381180213 -> Пн, 07 окт 2013 21:10:13 GMT (обратный не соответствует действительности)

но strtotime ("30.10.13") -> 1383084000 -> Вт, 29 Окт 2013 22:00:00 GMT (об. eld снова правильно)

Что не так?

+0

возможно дубликат [PHP StrToTime не работает] (http://stackoverflow.com/questions/5680056/php-strtotime-not-working) –

+0

StrToTime не является непогрешимым - если вы знаете формат, вы должен использовать [DateTime :: createFromFormat] (http://www.php.net/manual/en/datetime.createfromformat.php) (доступный из PHP 5.3.x и выше) или аналогичный. –

ответ

4

Strtotime угадывает, в каком формате вы отправляете дату, как и угадываете неправильно. Вы должны использовать DateTime(), где вы можете указать формат, по которому вы отправляете дату.

$date = DateTime::createFromFormat('d.m.y', $datestring); 
echo $date->format('Y-m-d'); 
+0

Для меня использование DateTime не решает эту проблему. Любое другое предложение? –

+1

Мне нужно будет увидеть код, чтобы помочь. – Pitchinnate

+0

Я в конце концов решил это. База данных клиентов фактически отправляла мне неправильные даты, такие как «00-00-2014». Вот почему у меня было странное поведение, но PHP правильно выполнял работу, проблема заключалась в том, что между стулом и столом –

Смежные вопросы