2016-12-14 33 views
0

我正在使用fullcalendar呈現來自多個Google日曆的事件。每個日曆表示特定位置的事件,並且我希望顯示原始時區中的所有事件,而不管客戶的位置。在其原始時區中顯示fullcalendar事件(來自gcal)

例如:東京上午8點開始的活動應該在上午8點爲所有人在任何地方展示(網頁上的日曆標示爲與東京有關)。

目前默認情況下,所有事件都轉換爲客戶端的本地時區 - 在倫敦,我的8am東京事件顯示爲晚上11點開始。

我設法在原始時區顯示事件的唯一方法是使用timezone選項的相應TZ字符串顯式初始化每個日曆,但感覺不對,因爲時區必須已經知道了。

這是預期的行爲,還是日曆事件本身有問題?

+0

如果您想查看源自位置B並位於B時區的位置A的日期時間信息。然後,您需要知道位置B的時區信息以執行翻譯。 –

+0

@RossBush我明白了,但我不想本地化任何東西。 Google日曆中最初創建的時區應該是顯示的時區。我目前正在獲取本地化版本,但我不想要任何版本,我不認爲我必須指定原始事件時區才能在該區域中顯示它。 – bbodien

+1

我敢打賭,日期時間存儲爲UTC時間。當您翻譯爲UTC的客戶端表示形式時,會發生唯一的奇蹟。你只需要在東京的UTC表示。 –

回答

1

基本上你可以定義事件startend PARAMS的時區。像

{ title: "event1", start: "2013-10-20T02:00:00+09:00" }

+09:00心滿意足的時區。欲瞭解更多:https://fullcalendar.io/docs/timezone/timezone/

如果你取出由谷歌日曆事件,則使之包含像

   ............... 
       $single_event['event_id'] = $event['id']; 
       $single_event['title'] = $event['summary']; ´ 
       $single_event['start'] = $date->format('Y-m-d'); // change here 
       $single_event['time'] = $date->format('H:i'); 
       $single_event['endtime'] = $enddate->format('H:i'); 

       array_push($event_list, $single_event); 
       ............... 

的時區,你可以準備你的活動,如果你使用谷歌的憑據直接向fullcalendar https://fullcalendar.io/docs/google_calendar/

然後只需檢查您的谷歌日曆時區設置。

+0

我不是通過API手動創建或提取事件 - 我使用Google日曆擴展程序從特定的Google日曆ID中提取所有事件。這些事件直接添加到Google日曆中(當時指定了時區)。我只是想顯示在原來的時區的所有事件。 – bbodien

+0

好吧,那麼我需要知道你是如何面對來自谷歌日曆的事件。你使用php獲取事件嗎? –

+0

@bbodien,我試圖讓它更清楚。現在看看。 –

0

問題是Google日曆時區設置不正確。一旦將每個日曆中的信息作爲來源進行更改,這些事件就會顯示在每個區域日曆的正確時區中。

+0

那麼你仍然可以接受我的答案,以幫助社區,因爲它包含所有相關信息,也幫助你找到你的問題:) –

相關問題