strtotime不会返回带有效时间戳的false

时间:2014-08-27 15:16:02

标签: php strtotime

知道为什么这个

strtotime('1356532858')  //Wed, 26 Dec 2012 14:40:58 GMT

时返回28043243813
strtotime('1356055871')  //Fri, 21 Dec 2012 02:11:11 GMT

返回false

我正在寻找一个解决方案,我可以将任何常用日期字符串转换为有效的时间戳。不幸的是,还包括一些(有效)时间戳

2 个答案:

答案 0 :(得分:1)

也许只有在字符串不是10位数时才可以尝试使用strtotime

$str = '1356055871';
$timestamp = (preg_match('/\d{10}/',$str,$match))?(int)$str:strtotime($str);
echo $timestamp;

关于为什么在第一次执行时收到值而在第二次执行时收到false的问题,这是因为1356532858被解释为某个有效日期,尽管不是您所期望的:< / p>

echo date("Y-m-d H:i:s",strtotime('1356532858'));
// outputs:   2858-08-27 13:56:53

strtotime可以接受您的时间戳,但应该有一个前导@

echo date("Y-m-d H:i:s",strtotime('@1356532858'));
// outputs:   2012-12-26 15:40:58

答案 1 :(得分:1)

尝试在时间戳前添加“@”。这将指示strtotime这是Unix格式的时间戳:

var_dump(strtotime('@1356055871'));

Source