在PHP中重新格式化自定义日期

时间:2010-09-17 02:14:38

标签: php

所以我知道如何用PHP格式化日期,而不是自定义格式。我的日期是字符串“YYMMDD”,我想把它设为“MMDDYYYY”。当MM和DD都是低位数时,strtotime似乎不会很好。

5 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

如果您正在运行PHP> = 5.3,请查看DateTime::createFromFormat。否则,如果您不想使用纯字符串操作技术,请使用更原始的strptimemktime将时间解析为UNIX时间戳,然后可以使用{{1}格式化}。

答案 2 :(得分: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);

你有你想要的字符串,或者你可以根据我在这里写的内容修改得足够接近的字符串。

答案 3 :(得分:0)

在1910年之前有很多日期?如果没有,你可以检查你的YY是否为&lt; = 10,如果是,则前置“20”否则前置“19”...有点类似于MM和DD的方法检查&lt; 10并且如果为真,则前置“0” ...(这是爆炸之后或子串...将每个部分分配给它自己的变量,即$ M = $ MM; $ D = $ DD; $ Y = $ YYYY;然后以任何顺序连接/排列希望......只是另一种可能使这种谚语猫皮肤的方法......

答案 4 :(得分:-1)

结束了:

$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));
相关问题