3

phpstrtotime()失败,持续一位数的分钟或秒数。

例如-

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
4

3 回答 3

1

PHP Date Man Page声明日期格式化命令的说明符is必须包含前导零。

没有办法解决这个问题,它们必须包含零。

于 2013-02-22T13:22:11.843 回答
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));
于 2013-02-22T13:24:46.307 回答
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”。

于 2021-04-07T14:05:36.460 回答