2012-03-16 29 views
0

我正在寫一個項目,在PHP中有相當的日期處理。在這樣做的過程中,我編寫了一段始終發生故障的代碼,利用PHP的date()函數。我已經分離出的代碼(代碼的項目,其餘是無關緊要的),在這裏它是:搞砸PHP日期()處理 - 可能的錯誤?

<?php 
    date_default_timezone_set("GMT"); 
    echo date("F m, Y g:ia",strtotime("April 15, 2012 10:00am")); 
    //Output: April 04, 2012 10:00am 
    //Should be: April 15, 2012 10:00am 
?> 

在理論(我認爲),這個代碼應該算2012年4月15日的時間戳,在早上10點。這似乎正在發生。然後date()函數應該以與輸入相同的格式將其重新轉換爲人類可讀的日期。但它並沒有。它輸出April 04, 2012 10:00am。 5月份,它說5月5日;六月,六月六日。所以我認爲有一些錯誤會讓這個月份的月份與月份本身混淆。

另一方面,這可能是一個奇怪的問題,我從來沒有考慮過。我正在尋找第二個意見/「你太蠢了,你做錯了X」。如果它是一個錯誤,我會報告它。我很難相信這是一個錯誤,因爲在這些日期即將到來的時候,我會認爲它現在已經被注意到了。

回答

4

http://php.net/manual/en/function.date.php

不,你剛剛搞砸了你的日期格式字符串 - F m的意思是「月(文本)月(數字) - 它打印04,因爲這是四月份的月數

你希望j,而不是打印該月的一天!

echo date("F j, Y g:ia",strtotime("April 15, 2012 10:00am")); // prints "April 15, 2012 10:00am" as expected. 

你認爲你已經發現的錯誤的工具需要很長時間看你的代碼的任何時間

+1

這就是我爲了查看相同的代碼太長而複製和粘貼太多而得到的結果。謝謝。 – 2012-03-16 00:30:56