php strtotime()
失败,一分钟或一秒钟。
例如 -
echo date('m/d/Y H:i:s', strtotime('02/23/2013 8:50:1 PM')); // 01/01/1970 01:00:00
echo date('m/d/Y H:i:s', strtotime('02/23/2013 8:5 PM')); // 01/01/1970 01:00:00
是否有快速解决方案?
我知道,我们可以分开它和它检查分钟或秒的字符串长度,并添加0前缀。
顺便说一句,有一件奇怪的事情是,如果最后一部分是一位数,那就失败了
例如 -
echo date('m/d/Y H:i:s', strtotime('02/23/2013 8:5:10 PM')); // 02/23/2013 20:05:10
// worked well, despite of one digit minute
答案 0 :(得分:1)
PHP Date Man Page表示日期格式化命令的说明符 i 和 s 必须包含前导零。
没有办法解决这个问题,它们必须包含零。
答案 1 :(得分:1)
$time = '02/23/2013 8:5 PM';
$time = preg_replace('/ ([0-9]*:[0-9]) /', " \${1}0 ", $time );
echo date('m/d/Y H:i:s', strtotime($time));
答案 2 :(得分:0)
preg_replace_callback('/ ([0-9]*):([0-9]*):([0-9]*)/', function($p){
return " ".str_pad($p[1], 2, 0, STR_PAD_LEFT).":".str_pad($p[2],2 , 0, STR_PAD_LEFT).":".str_pad($p[3],2, 0, STR_PAD_LEFT);
}, $some_bad_date_string);
这会将“11/04/2021 6:5:0”转换为“11/04/2021 06:05:00”。