Facebook SDK 返回不正确的事件时间
Facebook SDK returning incorrect times for events
我有一个网站,显示来自网站所有者的 Facebook 页面的事件。几周前,有人注意到网站上显示的活动时间有误,但几年来它们一直都是正确的。所以基本上我想弄清楚问题是什么。
这是一个例子
事件 X 的开始时间戳为 2017-12-18T17:00:00-0500。那个日期是正确的,那个时间 - 1700,或 5:00 - 是正确的时间。
所以我有这段代码可以将时间戳转换为我可以显示的内容
$start_time = date('g:i a', strtotime($event['start_time']));
这个returns10:00下午
的时间
我有同样的问题,结束时间没有正确转换。
我正在使用此代码转换日期(使用上面相同的时间戳):
$start_date = date('l, F j, Y', strtotime($event['start_time']));
这个returns正确的日期,这让我更加困惑,因为如果日期转换正确,时间如何转换不正确?
有人可以帮我抽出时间进行转换,以便我可以在网站上恢复这些活动吗?
是不同时区的问题。
您有一个带时区 -05:00
的日期时间,但是,date('P')
输出,您的服务器时区是 +00:00
。您可以使用 DateTime
class 将日期时间转换为您想要的时区。
// convert time to datetime instance
$timestamp = strtotime($event['start_time']);
$datetime = new DateTime;
$datetime->setTimestamp($timestamp);
// set timezone to US/Eastern, Eastern Standard Time (EST), UTC -5
$datetime->setTimezone(new DateTimeZone('US/Eastern'));
// output datetime format
$datetime->format('g:i a');
$datetime->format('l, F j, Y');
我有一个网站,显示来自网站所有者的 Facebook 页面的事件。几周前,有人注意到网站上显示的活动时间有误,但几年来它们一直都是正确的。所以基本上我想弄清楚问题是什么。
这是一个例子
事件 X 的开始时间戳为 2017-12-18T17:00:00-0500。那个日期是正确的,那个时间 - 1700,或 5:00 - 是正确的时间。
所以我有这段代码可以将时间戳转换为我可以显示的内容
$start_time = date('g:i a', strtotime($event['start_time']));
这个returns10:00下午
的时间我有同样的问题,结束时间没有正确转换。
我正在使用此代码转换日期(使用上面相同的时间戳):
$start_date = date('l, F j, Y', strtotime($event['start_time']));
这个returns正确的日期,这让我更加困惑,因为如果日期转换正确,时间如何转换不正确?
有人可以帮我抽出时间进行转换,以便我可以在网站上恢复这些活动吗?
是不同时区的问题。
您有一个带时区 -05:00
的日期时间,但是,date('P')
输出,您的服务器时区是 +00:00
。您可以使用 DateTime
class 将日期时间转换为您想要的时区。
// convert time to datetime instance
$timestamp = strtotime($event['start_time']);
$datetime = new DateTime;
$datetime->setTimestamp($timestamp);
// set timezone to US/Eastern, Eastern Standard Time (EST), UTC -5
$datetime->setTimezone(new DateTimeZone('US/Eastern'));
// output datetime format
$datetime->format('g:i a');
$datetime->format('l, F j, Y');