【问题标题】:Facebook SDK returning incorrect times for eventsFacebook SDK 返回错误的事件时间
【发布时间】:2017-12-18 04:29:44
【问题描述】:

我有一个网站,显示来自网站所有者 Facebook 页面的事件。几周前,有人注意到网站上的活动时间显示错误,但几年前它们一直是正确的。所以基本上我试图找出问题所在。

这是一个例子

事件 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']));

这会返回正确的日期,这让我更加困惑,因为如果日期转换正确,时间怎么不能正确转换?

有人可以帮我争取时间转换,以便我可以在网站上恢复这些事件吗?

【问题讨论】:

  • 似乎是不同时区的问题。
  • date('P') 的输出是什么?
  • @Ben date('P') 输出为 +00:00

标签: php facebook-graph-api timestamp facebook-php-sdk unix-timestamp


【解决方案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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2012-07-09
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多