2014-07-02 70 views
0

轉換日期我想PHP的日期從Y型F-d格式Y-M-d格式轉換。 我使用下面的代碼。PHP:從Y型F-d格式Y-M-d格式

<?php 
$originalDate = "2014-March-03"; 
$newDate = date("Y-m-d", strtotime($originalDate)); 
echo $newDate ; 
?> 

我得到這樣

2014年3月1日

輸出當我轉換日期「2014-MAR-03」

<?php 
$originalDate = "2014-Mar-03"; 
$newDate = date("Y-m-d", strtotime($originalDate)); 
echo $newDate ; 
?> 

我得到輸出像

2014年3月3日

爲什麼第一個不給出正確的結果呢?

回答

5

只需使用DateTime類,

$date = DateTime::createFromFormat('Y-M-d', '2014-Mar-03'); 
echo $date->format('Y-m-d'); 

$date = DateTime::createFromFormat('Y-F-d', '2014-March-03'); 
echo $date->format('Y-m-d'); 

DEMO

原因:作爲的strtotime只接受特定格式(ISO 8601 (YYYY-MM-DD)),它希望能夠識別日期的所有格式,我們提供給它的日期。 Read Note關於strtotime函數的更多詳細信息。

儘管DateTime :: createFromFormat函數返回根據指定格式格式化的新DateTime對象,並且我們可以使用該對象以任何格式的日期進行轉換。

+0

我同意你的答案,但爲什麼日期()不工作? –

+0

因爲strtotime只接受特定格式的日期。它希望能夠識別您提供給它的所有日期格式。 [注意](http://in3.php.net/manual/en/function.strtotime.php#refsect1-function.strtotime-notes)strtotime函數部分。 – Rikesh

+0

我想你需要在你的答案中加上這個 –

0

您需要在日期功能

$originalDate = "2014-Mar-03"; 
$newDate = date("Y-F-d", strtotime($originalDate)); 
echo $newDate ; 

F是一個月的完整的文本格式,如一月或三月使用F而不是M

0

您可以使用:

$originalDate = "2014-March-03"; 
$date = DateTime::createFromFormat('Y-F-d', $originalDate); 
echo $date->format('Y-m-d'); 

輸出是:

2014-03-03