2010-11-12 92 views
11

很簡單,在PHP中我有一個日期2011年1月8日,格式爲08-01-11 - 當我運行這個strtotime並將其轉換回到不同的日期格式,它恢復到2011年8月1日 - 不理想!PHP - 使用strtotime與英國日期格式(dd-mm-yy)

是否有任何簡單的方法可以解決這個問題,而不必將所有東西放置到不同的數組/變量中,然後再返回?

謝謝!

回答

11

strtotime()works with US dates only

的函數需要一個包含美國英語日期格式的字符串並嘗試將其格式解析爲Unix時間戳。

您將不得不重新排列日期格式或使用date_parse_from_format()(PHP 5.3+)來分析英式字符串。

+1

非常感謝,但ahhh! PHP 5.2.13在這裏。 – Nick 2010-11-12 10:31:02

+0

@尼克我看到了!然後'爆炸(「 - 」,$日期);'和重新排列陣列可能是最好的解決方案。 – 2010-11-12 10:32:33

+0

完美,謝謝 - 我會給它一個:) – Nick 2010-11-12 10:40:28

9

從PHP手冊:

「,在米日期/ d/y或DMY格式通過查看在各個組件之間的隔板消除歧義:如果分離器是斜槓(/),然後如果分隔符是破折號( - )或點(。),則假定歐洲的dmy格式

爲了避免潛在的歧義,最好使用ISO 8601 (YYYY-MM-DD)日期或DateTime :: createFromFormat()(如果可能)。「

我用破折號替換了斜線,然後strtotime按照英國日期的預期工作。

+0

完美的答案。 – Chud37 2017-03-14 20:29:33

27

的完美解決方案將是美國使用擺在首位正確的日期格式... 0)

我這樣做是爲了避開它:

$date = "31/12/2012"; 
$bits = explode('/',$date); 
$date = $bits[1].'/'.$bits[0].'/'.$bits[2]; 

$datestrtotime able

相關問題