2010-09-17 39 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); 

而且你有你要找的字符串或者足够接近它的东西,以至于你可以从我在这里写的内容中修改。