我正在与我的服务器执行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"));
我已经为其他时间戳使用了类似的代码,所以不确定我此时做错了什么。
答案 0 :(得分:6)
->setTimeZone()
方法失败,因为$date
不是有效的DateTime
对象。
由于您已设置的格式,它无法成为有效的DateTime
对象。
在您给出的当前格式中,其小y
对应于两位数字表示:
Mon, 15 Aug 2005 15:51:01 +0000
D, d M y H:i:s O
但是你给了2005
,它对应于大Y
(4位),所以它应该是:
D, d M Y H:i:s O