2012-11-08 111 views
1

也許我需要更多的睡眠,但我有一些怪誕的時間,我無法解釋。strtotime英國日期怪異

一個日期的英國本地化表示法是d/m/Y這就是我從外部源獲得的CSV內容插入MySQL(格式:Y-m-d)。

當然,我看到的直接問題是PHP(使用strtotime時)將這些錯誤轉換。下面是字段值的var_dump用一個例子後strtotimevar_dump後:

string(10) "13/07/1992" string(19) "1969-12-31 16:00:00" // This one is odd 
string(10) "07/09/1992" string(19) "1992-07-09 00:00:00" 
string(10) "09/11/1992" string(19) "1992-09-11 00:00:00" 

原本我以爲這是因爲PHP不支持英國的符號(http://www.php.net/manual/en/datetime.formats.date.php),並認爲這是美國然而迄今爲止這並不能解釋爲什麼如果我改變了功能,以取代/-

date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $string_time))) 

同一日期做的工作:

string(10) "13/07/1992" string(19) "1992-07-13 00:00:00" 
string(10) "07/09/1992" string(19) "1992-09-07 00:00:00" 
string(10) "09/11/1992" string(19) "1992-11-09 00:00:00" 

我實際上有一個200日期的測試集,所有工作都在-表示法下。

根據文檔,這裏不應該適用相同的規則嗎?

+0

沒關係我需要更多的睡眠,如果它是一個斜槓它是美國人,如果它是一個短劃線或點是歐洲日期,對於浪費時間對不起 – Sammaye

回答

0

美國格式使用斜槓,因爲那是那裏的慣例。通常,不使用破折號。 strototime()的行爲很簡單:

  • 兩位數,斜槓,兩位數,斜槓,四位數?美國格式(月份,然後一天)。
  • 兩位數字,短劃線,兩位數字,短劃線,四位數字?國際格式(日,月)。

可以找到更多的技術列表格式(以及如何解釋它們的strototime()here。您可能也有興趣DateTime::createFromFormat

+0

事實上,我讀了在最後一分鐘,同樣適用於點好。 – Sammaye