PHP DateTime __construct() 無法解析位置 x 處的時間字符串 (xxxxxxxx)

2022-08-30 09:21:10

当我尝试使用时间戳创建新的DateTime对象时,我遇到了这个构造错误:

异常: DateTime::_construct(): 无法解析位置 8 处的时间字符串 (1372622987) (8): DateTime->_construct() 中的意外字符

对象创建代码为:

$start_date = new DateTime( "@{$dbResult->db_timestamp}" );

其中 $dbResult->db_timestamp 是从数据库中获取的有效 unix 时间戳。有问题的时间戳是:

1372622987

对于传递的无效格式,我会理解此错误,但这是一个真正的时间戳。

这很奇怪的原因:我运行了一个脚本来创建一个新的DateTime对象,时间戳作为硬编码值传入,并且它没有报告任何错误。

这似乎是一次性的,但如果有的话,我需要一个解释,因为我负担不起这种情况再次发生。


答案 1

如果您对其进行了硬编码,则应改用 setTimestamp:

$start_date = new DateTime();
$start_date->setTimestamp(1372622987);

在您的情况下

$start_date = new DateTime();
$start_date->setTimestamp($dbResult->db_timestamp);

答案 2

使用方法:createFromFormat

$start_date = DateTime::createFromFormat("U", $dbResult->db_timestamp);

更新

我现在推荐使用


推荐