我刚试过,
date_create_from_format('Ym','201302')
我猜是因为今天是第29届,它实际上是在3月1日让我回来了。
我希望能回来2013-02-01 00:00:00
。
是否有一个不同的功能可以“正确”解析日期?如果没有,我可以自己提取,不是什么大不了的事。
答案 0 :(得分:5)
如果
format
不包含字符!
,则format
中未指定的部分生成时间将设置为当前系统时间。如果
format
包含字符!
,则format
中未提供部分生成时间,以及!
左侧的值,将设置为Unix纪元的相应值。Unix纪元是1970-01-01 00:00:00 UTC。 (DateTime Manual)
因此,在!
字符串的开头添加format
可以解决您的问题。
答案 1 :(得分:0)
TheWolf's solution似乎工作得很好,但这是我开始写作的另一种选择:
function CompactStrToTime($str) {
$year = strlen($str)>=4 ? substr($str,0,4) : date('Y');
$month = strlen($str)>=6 ? substr($str,4,2) : 1;
$day = strlen($str)>=8 ? substr($str,6,2) : 1;
$hour = strlen($str)>=10 ? substr($str,8,2) : 0;
$min = strlen($str)>=12 ? substr($str,10,2) : 0;
$sec = strlen($str)>=14 ? substr($str,12,2) : 0;
return mktime($hour,$min,$sec,$month,$day,$year);
}