2013-10-07 123 views
1

我使用PHP的strtotime功能 (日期格式DOC從DMY Day, month and two digit year, with dots or tabshttp://www.php.net/manual/en/datetime.formats.date.php) ,發現問題:PHP的strtotime返回錯誤的時間戳

從php.net例子的strtotime( 「08年6月30日」) - > 1214773200 - > Sun,29 Jun 2008 21:00:00 GMT(反向右轉)

另一個變種strtotime(「24.10.13」) - > 1381180213 - > Mon,07 Oct 2013 21:10:13 GMT(反向不對)

但是strtotime(「30.10.13」) - > 1383084000 - > 2013年10月29日星期二22:00:00 GMT(rev erse結果再次正確)

什麼錯了?

+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(),您可以在其中指定您使用as發送日期的格式。

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

對我來說,使用DateTime並不能解決這個問題。任何其他建議? –

+1

我需要查看代碼才能提供幫助。 – Pitchinnate

+0

我最終解決了它。客戶數據庫實際上發送給我不正確的日期,如「00-00-2014」。這就是爲什麼我有奇怪的行爲,但PHP正確地完成了這項工作,問題出在椅子和桌子之間 –