在 PHP 中转换时间戳


Converting timestamp in PHP

我正在与外部供应商合作,该供应商正在对我的服务器执行HTTP GET以提交送达报告。一切都在工作,除了我无法将时间戳转换为我的本地格式。时间戳按如下方式提交:

Mon, 15 Aug 2005 15:51:01 +0000

然后,我需要转换为本地时区的其他格式。这是我当前的代码:

date_default_timezone_set('UTC');
$ts = $_GET['skebby_date_time'];
$date = DateTime::createFromFormat('D, d M y H:i:s O', $ts);
$date->setTimeZone(new DateTimeZone("Australia/Sydney"));
$fmTimestamp = $date->format('m/d/Y h:i:s A');

这当前正在生成一个致命错误:在此行的非对象上调用成员函数 setTimeZone():

$date->setTimeZone(new DateTimeZone("Australia/Sydney"));

我已经对其他时间戳使用了类似的代码,所以不确定我现在做错了什么。

->setTimeZone()方法失败$date因为不是有效的DateTime对象。

由于您设置的格式,它未能成为有效的 DateTime 对象。

在您当前的格式中,它的小y对应于两位数表示:

Mon, 15 Aug 2005 15:51:01 +0000
D,   d  M   y    H:i:s    O

但是您已经给出了对应于大Y(4 位数字)2005,因此它应该是:

D, d M Y H:i:s O