我有一个网站,显示网站所有者的Facebook页面上的事件。几个星期前,有人注意到网站上的活动时间显示错误,但他们已经纠正了几年。所以基本上我想弄清问题是什么。
这是一个例子
活动X的开始时间戳为2017-12-18T17:00:00-0500。该日期是正确的,那个时间 - 1700或5:00 - 是正确的时间。
所以我有这个代码将时间戳转换为我可以显示的东西
$start_time = date('g:i a', strtotime($event['start_time']));
这将返回晚上10:00的时间
我有同样的问题,结束时间没有正确转换。
我正在使用此代码转换日期(使用上面相同的时间戳):
$start_date = date('l, F j, Y', strtotime($event['start_time']));
这会返回正确的日期,这让我更加困惑,因为如果日期转换正确,时间怎么不能正确转换?
有人可以帮我抽出时间进行转换,这样我就可以在网站上找到这些活动吗?
这是不同的时区问题。
你有一个日期时间与时区-05:00
,但date('P')
输出,你的服务器时区是+00:00
。您可以使用DateTime
类将日期时间转换为您想要的时区。
// 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');