2013-02-13 130 views
-1

我的日期格式爲「m-Y-d」。我如何修改這個日期來格式化「Y-d-m」?對於這個最好的應該是功能,我可以添加舊格式和新格式,但我怎麼能做到這一點?更改格式日期

例如我有

$date = '01-2013-13'; // "m-Y-d" 

我想接收:

$newDate = '2013-13-01'; // "Y-d-m" 
+3

'date('new format',strtotime($ date));' – 2013-02-13 13:45:36

+1

@WaleedKhan - 這個起源日期格式是'strtotime'可以解析的標準日期嗎?另外,我相信'strtotime('01 -02-2013')'會和'strtotime('01/02/2013')'不同,第一個給出'2013年2月2日',後者'2013年1月1日'。 – 2013-02-13 13:46:34

+2

這是一個非常基本的問題,我不能相信一個網絡搜索「PHP格式日期」沒有指出你的答案。 – Jon 2013-02-13 13:47:27

回答

0

PHP無法分析使用strtotime()的格式。你必須做這樣的事情:

function reformat($old_date) 
{ 
    $parts = explode('-', $old_date); 
    return $parts[1].'-'.$parts[2].'-'.$parts[0]; 
} 

,然後使用調用它:

$new_format = reformat($date); 

或者,你可以使用DateTime::createFromFormat()

function reformat($old_date) 
{ 
    $new_date = DateTime::createFromFormat('m-Y-d', $old_date); 
    return $new_date->format('Y-m-d'); 
} 
0

可以使用DateTime類,例如:

$date = new DateTime('01-2013-13'); 

然後使用format()方法,如:

$date->format('Y-m-d'); 

更多信息: http://www.php.net/manual/en/datetime.format.php

+1

我傾向於使用'createFromFormat'而不是簡單的'DateTime'構造函數,因爲傳入的格式是事先已知的。這也是不尋常的,可能是不明確的,所以讓PHP猜測這種格式可能不是最好的主意。 – SDC 2013-02-13 13:49:03

0

要創建你需要使用:

$newDate = date('Y-d-m'); 

你可以找到更多的信息here