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);
更新の場合、最初に手動で編集された (タイムゾーンを持つ) イベントを編集して上記の日時形式を使用してイベント時間を変更すると、タイムゾーンは保持され、場所を変更しても効果がないことに注意してください。