【问题标题】:Displaying fullcalendar events (from gcal) in their original timezone在原始时区显示完整日历事件(来自 gcal)
【发布时间】:2016-12-14 14:34:19
【问题描述】:

我正在使用 fullcalendar 来呈现来自多个 Google 日历的事件。每个日历代表特定位置的事件,我想显示原始时区中的所有事件,无论客户的位置如何。

例如:东京早上 8 点开始的活动应该在早上 8 点向所有地方的所有人显示(页面上的日历标记为与东京相关)。

目前默认情况下,所有事件都转换为客户的本地时区 - 在伦敦,我的东京上午 8 点事件显示为晚上 11 点开始。

我设法在原始时区显示事件的唯一方法是使用 timezone 选项的相应 TZ 字符串显式初始化每个日历,但由于时区,必须达到这个长度感觉不对一定是已知的。

这是预期的行为,还是日历事件本身有问题?

【问题讨论】:

  • 如果您想查看位置 A 中源自位置 B 并本地化到 B 时区的日期时间信息。然后您需要知道位置 B 的时区信息才能执行翻译。
  • @RossBush 我明白了,但我不想本地化任何东西。最初在 Google 日历中创建的时区应该是显示的时区。我目前正在进行本地化,但我不想要任何本地化,而且我认为我不应该指定原始事件时区以便在该区域中显示它?
  • 我打赌日期时间存储为 UTC 时间。当您转换为 UTC 的客户端表示时,唯一的魔法就会发生。您只需以东京的 UTC 表示形式显示即可。
  • @RossBush 你可能是对的 - 我正在尝试获取对日历的访问权限以进行检查。
  • @RossBush 您的怀疑是正确的 - 每个日历上的 Google 日历时区设置本身都设置为 UTC。 ???感谢您的帮助!

标签: jquery fullcalendar


【解决方案1】:

基本上,您可以在事件 startend 参数上定义时区。喜欢

{ 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/

然后只需检查您的谷歌日历时区设置。

【讨论】:

  • 我没有通过 API 手动创建或获取事件 - 我正在使用 Google 日历扩展程序从特定的 Google 日历 ID 中获取所有事件。事件会直接添加到 Google 日历(使用当时指定的时区)。我只是想显示该原始时区中的所有事件。
  • 好的,那么我需要知道你是如何面对来自谷歌日历的事件的。您是否使用 php 获取事件?
  • @bbodien,我试图让它更清楚。现在看看。
  • 我没有使用 PHP 或任何后端,它只是 Google 日历扩展 fullcalendar.io/docs/google_calendar - 我认为问题可能在于事件的创建方式或日历的时区设置本身。我正在尝试访问检查。
  • 那应该没问题
【解决方案2】:

问题在于 Google 日历时区设置不正确。在每个用作源的日历上更改此设置后,事件就会显示在每个区域日历的正确时区中。

【讨论】:

  • 那么您仍然可以接受我的回答来帮助社区,因为它包含所有相关信息并帮助您找到问题:)
猜你喜欢
  • 1970-01-01
  • 2018-03-02
  • 2020-10-18
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-04
  • 2020-07-15
相关资源
最近更新 更多