無論登錄狀態如何,手動輸入Facebook的事件顯示正確的時間,但通過應用程序上傳的事件的日期爲ISO-8601(包括時區信息即2013-09-27T13:00:00 + 01:00)導致Facebook假設事件是以美國爲基礎展示的。Facebook忽略使用ISO-8601上傳的事件中未登錄用戶的時區信息datetime
用戶登錄後,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,雖然這不會顯示退出時?
一些額外的信息,I`ve下載頁面的事件飼料,並注意以下錯誤:
的上傳的2013-09-27T13日期時間:00:00 + 01:00更改爲2013- 09-27T12:00:00 + 0000 並且沒有顯示時區,那麼它是否需要上傳其他一些時區數據?
現在我已經加入到代碼中使用,以使現有的事件編輯:
$post = $facebook->api('/' . $_POST['event_id'] . '/', 'POST', $event_data);
進行更新,並注意編輯原本手動編輯的事件(具有時區)改變事件時間使用以上日期時間格式,時區將保留,更改位置也不起作用。
是的,這是啓用,我認爲它的默認設置。 我也嘗試過爲該事件設置的地理位置(經緯度/長度),但仍然不好。 – Matt
我應該添加,我已經閱讀你的鏈接,我們正在遵守這一點,事實上,如果日期時間格式根本不調整(因此不符合iso8601),將返回一個拒絕提交的錯誤。 – Matt
您是否可以更新您的問題以顯示代碼提交數據的位置,以及您完成後它在Facebook上的顯示方式?你確定你不只是看到時間適當調整用戶的時區? –