2013-07-02 121 views
0

我將以下代碼轉換成日期 - >18/07/2013mysql支持的格式。php日期格式轉換錯誤

$date = date('Y-m-d', strtotime('18/07/2013')); 

理想的情況下,應返回2013-07-18 ...
但是,問題是,它會自動選擇的字符串:
YEAR as YEAR MONTH as DAY DAY as MONTH

現在,因爲它確定18month ,它會超出範圍並顯示默認日期1970-01-01

我已經浪費了將近兩天的時間了。

如果有人能幫忙,請提前致謝!

+2

你可以破解它爲'的strtotime(str_replace函數( '/', ' - ', '18/07/2013'))' –

+0

請發佈了一個新問題之前使用搜索,這是[Strtotime()不能與dd/mm/YYYY格式一起使用)的副本(http://stackoverflow.com/questions/2891937/strtotime-doesnt-work-with-dd-mm-yyyy-format ) – Prix

+0

從PHP手冊 - > YY「/」MM「/」DD這是你應該使用的日期功能... http://php.net/manual/de/datetime.formats.date。 php –

回答

2

試試這個:)

echo date('Y-m-d', strtotime(str_replace('/', '-', '18/07/2013'))); 
+0

謝謝你!像魅力一樣工作! – Safeer

5

使用DateTime對象,讓PHP瞭解你將日期傳遞給它的格式。

$date = DateTime::createFromFormat('d/m/Y', '18/07/2013'); 
echo $date ->format('Y-m-d'); 
+0

對於PHP 5 = 5.3.0,這不是這個嗎?我的服務器上安裝了較舊版本的php。 – Safeer

+0

@Safeer - 比我的情況下,你需要做的調整,如評論中的andy&prix所示。 – Rikesh

+0

感謝Rikesh,工作。 Ayyappan的回答也相當不錯:) – Safeer

1

的strtotime參數應該是格式18-07-2013

0

正斜槓(/)表示美國M/d/Y格式,破折號( - )(。)指歐洲的d-M-Y和期是指ISO Y.M.D.

觀察:

echo date("jS F, Y", strtotime("11.12.10")); 
// outputs 10th December, 2011 

echo date("jS F, Y", strtotime("11/12/10")); 
// outputs 12th November, 2010 

echo date("jS F, Y", strtotime("11-12-10")); 
// outputs 11th December, 2010