2011-08-27 180 views
2

在這裏我嘗試將日期轉換爲不同格式的函數。php日期格式轉換問題

/* example: 
* dateString   = '03/25/2010'; 
* inputDateFormat  = '%m/%d/%Y'; 
* ouputDateFormat  = 'Y-m-d'; 
* return    -> '2010-03-25'; 
*/ 
function formatDate($dateString,$inputFormat=NULL,$outputFormat=NULL){ 
    if($dateString==''||$dateString==NULL) return ''; 
    $t = strptime($dateString,$inputFormat); 
    return gmdate($outputFormat,mktime($t[tm_sec],$t[tm_min],$t[tm_hour],($t[tm_mon]+1),($t[tm_mday]+1),($t[tm_year]+1900))); 
} 

我的問題是

當我嘗試這個日期Wed, 19 Jan 2011 21:16:37 +0000轉換爲2011-01-19 21:16:37與以下行:

echo formatDate('Wed, 19 Jan 2011 21:16:37 +0000','%a, %d %b %Y %H:%M:%S','Y-m-d H:i:s'); 

的結果是這樣的:

2011-01-21 11:16:21 

爲什麼我會有2天額外的日期。 你有什麼想法嗎?

回答

5

用這個代替:

function formatDate($dateString, $outputFormat=NULL){ 
     return date($outputFormat, strtotime($dateString)); 
    } 

    echo formatDate('Wed, 19 Jan 2011 21:16:37 +0000','Y-m-d H:i:s'); 
+0

它的工作原理謝謝:)但我需要指定輸入格式,過於你有什麼建議的呢? –

+0

沒問題,作爲提醒,如果您的日期無效,您應該添加驗證。在PHP 5.1之前,strtotime返回-1,之後它返回FALSE。 –

+0

當我給這樣的日期03/02/2011它不能理解哪一天是哪天,哪一天是月:) –

4

這是一個瘋狂的猜測,但也許你需要設置yoru時區?

date_default_timezone_set()(需要PHP 5)