无论登录状态如何,手动输入 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);
对于更新并注意编辑最初手动编辑的事件(具有时区)使用上述日期时间格式更改事件时间,时区被保留,更改位置也没有效果。