1

我从 Facebook 将事件的开始和结束时间存储为 PST 的各种来源获得。但一定有什么我错过了。以我创建的这个 facebook活动为例。我住在意大利,实际上当我插入事件时间时,它显示 UTC + 2。我插入2012-05-18 10.30 PM事件开始时间。我希望这将保存为太平洋时间下午 1.30,因为 PST 应该是 GMT -7(因为夏令时)。但如果我这样做

$start = date("Y-m-d H:i:s", $facebook_event['start_time'] );

$start2012-05-19 05:30:00在我插入的时间后 7 小时出来!这怎么可能?我错过了什么?

编辑 - 这就是我检索事件 start_time 的方式

        $fql = "SELECT 
                    eid,
                    name,
                    description,
                    start_time,
                    end_time,
                    venue,
                    location,
                    update_time
                FROM
                    event
                WHERE 
                    eid IN (SELECT eid FROM event_member WHERE uid = $id)" ;
        $events = $facebook->api( array(
            'method' => 'fql.query',
            'query' => $fql,
        ) );

我不使用/$id/events/api 调用,因为当我收到朋友的事件时,我总是返回一个空集

4

2 回答 2

4

让我解释一下 Facebook 时区规则,

Facebook 始终假定您发送的 start_time 或 end_time 位于太平洋时区。因此,我们有责任将它们发送到太平洋时区。

在上述情况下,您在 EST 中插入了 2012-05-18 10.30 PM,但 Facebook 假设您是在太平洋时间发送的。因此它转换为 UTC 为 2012-05-19 05:30:00。您将通过 API 接收。

只需 fb_stored_time = epoch(UTC(assumed_Pacific_time))

于 2012-05-15T12:52:01.670 回答
0

把它放在你的脚本中日期函数之前。

date_default_timezone_set('America/Los_Angeles');  
于 2012-11-27T07:20:45.357 回答