2013-07-15 36 views
0

無論登錄狀態如何,手動輸入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);

進行更新,並注意編輯原本手動編輯的事件(具有時區)改變事件時間使用以上日期時間格式,時區將保留,更改位置也不起作用。

回答

0

您是否在Facebook app settings中啓用了時區支持?

Facebook Events Timezone setting

你可以閱讀更多這方面的here

+0

是的,這是啓用,我認爲它的默認設置。 我也嘗試過爲該事件設置的地理位置(經緯度/長度),但仍然不好。 – Matt

+0

我應該添加,我已經閱讀你的鏈接,我們正在遵守這一點,事實上,如果日期時間格式根本不調整(因此不符合iso8601),將返回一個拒絕提交的錯誤。 – Matt

+0

您是否可以更新您的問題以顯示代碼提交數據的位置,以及您完成後它在Facebook上的顯示方式?你確定你不只是看到時間適當調整用戶的時區? –

相關問題