2011-07-14 10 views
2

我試圖將這個日期格式(以PHP格式):「dd/mm/yyyy」,例如18/08/2011,轉換爲「j M Y」,應該輸出類似這樣的內容,「2011年8月18日」。如何在PHP中將此日期(dd/mm/yyyy)格式化爲(j M Y)?

如果有人可以幫忙,將不勝感激, 謝謝。

+0

丹尼,你必須接受任何問題,如果你找到答案的 – chhameed

+0

可能重複[PHP轉換一個日期到另一個日期格式(http://stackoverflow.com/questions/2167916/php-convert-one-date -into-another-date-format) – NikiC

回答

1
<?php 
    $str = "18/08/2011"; 
    preg_match("|(.*?)/(.*?)/(.*?)|", $str, $match); 
    $str = $match[2]."/".$match[1]."/".$match[2]; 
    echo $your_format = date("j M Y", strtotime($str)); //strtotime() expects mm/dd/yyyy 
    //returns 18 Aug 2008 
?> 

http://sandbox.phpcode.eu/g/29439.php

+0

我需要將2011年8月18日轉換爲2011年8月18日。當我將$ str變量更改爲18/08/2011時,它會輸出1970年1月1日? – Danny

+0

它應該現在工作 – genesis

+0

是的,完美的作品。謝謝,非常感謝。 – Danny

0

這裏有一種方法:

$oldDate = "18/08/2011"; 
$dateArr = explode("/", $oldDate); 
$newDate = date("j M Y", mktime(0,0,0,$dateArr[1],$dateArr[0],$dateArr[2])); 

將正常運行是。請注意0​​中列出的$dateArr元素的順序。

0

strtotime()很好,但由於系統的日期配置,它有運行返回意外結果的風險。爲了更加安全,我傾向於使用查找數組。

<?php 

function dateReformat($date) 
{ 
    $monthList = array 
    (
     'January', 
     'February', 
     'March', 
     'April', 
     'May', 
     'June', 
     'July', 
     'August', 
     'September', 
     'October', 
     'November', 
     'December' 
    ); 

    $tmp = explode('/', $date); 
    $month = $monthList[ $tmp[1]-1 ]; 

    return "{$tmp[0]} {$month} {$tmp[2]}"; 
} 

echo dateReformat('12/05/1980'); 
2

如果您使用PHP> = 5.3,您可以嘗試DateTime類。

<?php 
    $dateString = '18/08/2011'; 
    $dt = DateTime::createFromFormat('d/m/Y', $dateString); 

    echo date('d M Y', $dt->getTimestamp()); 
?> 
相關問題