PHP strtotime失败1分钟或秒

时间:2013-02-22 13:17:04

标签: php datetime unix-timestamp strtotime

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

3 个答案:

答案 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”。