0

我有一个网站,显示来自网站所有者的Facebook页面的事件。几个星期前,有人注意到网站上的事件时间显示错误,但他们在几年内都是正确的。所以基本上我试图找出问题所在。Facebook SDK返回不正确的事件时间

下面是一个例子

事件X拥有2017-12-18T17的开始时间时间戳:00:00-0500。那个日期是正确的,那个时间 - 1700或5:00 - 是正确的时间。

所以我有这样的代码的时间戳转换的东西我可以显示

$start_time = date('g:i a', strtotime($event['start_time'])); 

这返回的10:00 PM

时间我与结束时间不正确地转换了同样的问题。

我使用此代码转换的日期(使用上述相同的时间戳):

$start_date = date('l, F j, Y', strtotime($event['start_time'])); 

这将返回正确的日期,这让我困惑甚至更多,因为如果日期正确转换,请问该怎么时间不正确转换?

有人可以帮助我得到转换的时间,所以我可以在网站上获得这些事件吗?

+0

看起来像不同的时区问题。 –

+0

'date('P')'的输出是什么? – Ben

+0

@本日期('P')输出为+00:00 –

回答

1

这是不同的时区问题。

你有一个带时区的日期时间-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'); 
+0

您是一位绅士和学者。谢谢! –