2010-09-17 88 views
1

所以我知道如何在PHP中格式化日期,但不能從自定義格式中格式化日期。我有一個字符串「YYMMDD」的日期,我想使它成爲「MMDDYYYY」。當MM和DD都是低位數字時,strtotime看起來不會很好。重新格式化PHP中的自定義日期

回答

-1

已結束up做:

$expiration_date_year = substr($matches['expiration_date'],0,2); 
      $expiration_date_month = substr($matches['expiration_date'],2,2); 
      $expiration_date_day = substr($matches['expiration_date'],4,2); 
      $expiration_date = date('m/d/Y', mktime(0,0,0,$expiration_date_month, $expiration_date_day, $expiration_date_year)); 
3

使用str_split

$date1 = "YYMMDD"; 
list($yy, $mm, $dd) = str_split($date1, 2); 

// MMDDYYYY format, assuming they are all > 2000 
$date2 = $mm . $dd . "20" . $yy; 
+0

他們不是全部都是2000,我確實需要4位數的年份 – muncherelli 2010-09-17 02:27:06

+2

@ user239292:用一個簡單的條件來區分20和21世紀是很容易的。 – animuson 2010-09-17 02:28:53

2

如果你正在運行PHP> = 5.3,看看DateTime::createFromFormat否則,如果你不想使用純字符串處理技術,使用更原始strptimemktime一起解析。將時間轉換爲UNIX時間戳,然後可以使用date格式化。

0

有許多日期之前1910年?如果不是,你可以檢查你的YY爲< = 10,如果爲真,則前面加上「20」,否則加上「19」...有點類似MM和DD檢查< 10,如果是真的,則加上「0」。 (這是全部爆炸後或子字符串...將每個部分分配給它自己的變量,即$ M = $ MM; $ D = $ DD; $ Y = $ YYYY;然後按您想要的順序拼接/排列。 ..只是對皮膚衆所周知的貓另一個潛在的方式...

1

也許我下想這,但你能不能只:


    $oldDate='040220'; // February 20th, 2004 

    $year = substr($oldDate, 0,2); 
    $year += $year < 50 ? 2000 : 1900; 

    $date = preg_replace('/\d{2}(\d{2})(\d{2})/', '$1/$3/'.$year, $oldDate); 

而且你有你要找的字符串或者足夠接近它的東西,以至於你可以從我在這裏寫的內容中修改。