2016-12-14 92 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

那么你仍然可以接受我的答案,以帮助社区,因为它包含所有相关信息,也帮助你找到你的问题:) –