重新格式化PHP中的自定义日期
问题描述:
所以我知道如何在PHP中格式化日期,但不能从自定义格式中格式化日期。我有一个字符串“YYMMDD”的日期,我想使它成为“MMDDYYYY”。当MM和DD都是低位数字时,strtotime看起来不会很好。重新格式化PHP中的自定义日期
答
已结束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));
答
使用str_split:
$date1 = "YYMMDD";
list($yy, $mm, $dd) = str_split($date1, 2);
// MMDDYYYY format, assuming they are all > 2000
$date2 = $mm . $dd . "20" . $yy;
答
如果你正在运行PHP> = 5.3,看看DateTime::createFromFormat
否则,如果你不想使用纯字符串处理技术,使用更原始strptime
与mktime
一起解析。将时间转换为UNIX时间戳,然后可以使用date
格式化。
答
有许多日期之前1910年?如果不是,你可以检查你的YY为< = 10,如果为真,则前面加上“20”,否则加上“19”...有点类似MM和DD检查< 10,如果是真的,则加上“0”。 (这是全部爆炸后或子字符串...将每个部分分配给它自己的变量,即$ M = $ MM; $ D = $ DD; $ Y = $ YYYY;然后按您想要的顺序拼接/排列。 ..只是对皮肤众所周知的猫另一个潜在的方式...
答
也许我下想这,但你能不能只:
$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);
而且你有你要找的字符串或者足够接近它的东西,以至于你可以从我在这里写的内容中修改。
他们不是全部都是2000,我确实需要4位数的年份 – muncherelli 2010-09-17 02:27:06
@ user239292:用一个简单的条件来区分20和21世纪是很容易的。 – animuson 2010-09-17 02:28:53