所以我知道如何用PHP格式化日期,而不是自定义格式。我的日期是字符串“YYMMDD”,我想把它设为“MMDDYYYY”。当MM和DD都是低位数时,strtotime似乎不会很好。
答案 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
。否则,如果您不想使用纯字符串操作技术,请使用更原始的strptime
和mktime
将时间解析为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));