0

无论登录状态如何,手动输入 facebook 的事件都会显示正确的时间,但通过日期时间为 ISO-8601 的应用程序上传的事件(包括时区信息,即 2013-09-27T13:00:00+01:00)会导致 facebook假设事件是基于美国的显示。

用户登录后,facebook 会使用时区信息正确显示事件。

值得注意的是,手动输入的事件会显示 UTC+1 指示符,该指示符不会出现在上传的事件中。

当访问者未登录时,为什么 facebook 会忽略时区信息,而仅针对上传的事件?

facebook 是否需要额外的时区数据,或者这是一个错误。

日期从 dBase 中提取并转换为 ISO8601: date("c", strtotime($date))

那么上传功能是:

        `$page = $facebook->api("/{$page_id}");
        $event_data = array(
            'name' => stripslashes($_POST['name']),
            'description' => stripslashes(preg_replace('/£/', '£', $_POST['description'])),
            'start_time' => $_POST['start_time'],
            'end_time' => $_POST['end_time'],
            'ticket_uri' => $_POST['ticket_uri'],
            'location' => $_POST['location'],
            'location_id' => $_POST['location_id'],
            'no_feed_story' => ($_POST['no_feed_story'] == 1),
            'picture' => $_POST['picture'],
            'access_token' => $access_token,
            'page_id' => $page_id);
     }

    $post = @$facebook->api('/' . $page_id . '/events?fields=name,picture,description,start_time,end_time,ticket_uri,location,no_feed_story', 'POST', $event_data);`

如果未登录 facebook,这将给出:[时间] 9 月 27 日 05:00 至 9 月 29 日 07:00 登录后:[时间] 9 月 27 日 13:00 至 9 月 29 日 15:00

我在英国,所以从指定的时区 (UTC+1) 观看,我的 IP 位置是伦敦。

编辑上传的事件时区也显示为 UTC+01,但在注销时不显示??

一些附加信息,我已经下载了页面的事件提要并注意以下错误:

上传的日期时间 2013-09-27T13:00:00+01:00 更改为 2013-09-27T12:00:00+0000 并且没有显示时区,所以它是否期望上传其他时区数据?

我现在添加到代码中以允许使用以下方法编辑现有事件:

$post = $facebook->api('/' . $_POST['event_id'] . '/', 'POST', $event_data);

对于更新并注意编辑最初手动编辑的事件(具有时区)使用上述日期时间格式更改事件时间,时区被保留,更改位置也没有效果。

4

1 回答 1

0

您是否在Facebook 应用设置中启用了时区支持?

Facebook 活动时区设置

您可以在此处了解更多信息。

于 2013-07-15T17:08:03.200 回答