【问题标题】:Handling Daylight saving time in Google Calendar API在 Google Calendar API 中处理夏令时
【发布时间】:2018-04-18 19:36:23
【问题描述】:

Google 支持根据 DST 在日历事件上显示时间。但是,当我从 Google Calendar API,我在 json 中得到不同时间的事件,即使在 UI 上它们都有相同的时间,但它们在不同的日期。这是一个例子:

我在 2017 年 10 月 17 日创建了一个活动,时间为 16:00-17:00(当地时间)。

start={dateTime=2017-10-17T14:00:00.000Z} 

另一个事件是在 2017 年 11 月 14 日创建的,时间为 16:00-17:00(当地时间)。

start={dateTime=2017-11-14T15:00:00.000Z}

在这两个日期之间,我们有一个 DST 时间切换。但是,那是在我的时区(东欧时区)。 Google 以 UTC 格式返回日期(我们在日期的结尾有“Z”)。

Google 为何会在 UI 上显示的同一时间返回不同的 UTC 时间? 由于没有清楚地了解 Google 何时将 DST 应用于时间,我在后端处理该问题时遇到了一些问题。

【问题讨论】:

  • 东欧时间夏季为UTC+3,冬季为UTC+2。因此,您在当地时间 16:00 的事件应该分别是 13:00 UTC 和 14:00 UTC。您确定您使用的是正确的本地时区吗?

标签: java date google-api google-calendar-api


【解决方案1】:

您是否注意到欧洲已切换到Central European Time on Sunday 29 Oct

这应该是一小时的差异。

当您在 2017-10-17 时间 16:00-17:00 创建第一个事件时,它会使用偏移量 -02:00 转换为 UTC。

但是,第二个事件是使用偏移量 -01:00 转换的。

【讨论】:

  • UTC 也会切换吗?
  • 不,UTC 保持不变。但是您使用本地时间创建事件,因此当转换为 UTC 时,您会看到 switch 和之后的差异。
  • 是不是说google总是在API中使用UTC而不添加dst时长,但是我创建事件时,在显示方面却使用了当前的DST规则?
  • 一般规则是,机器总是使用 UTC,人类使用本地时间。
  • 日历 API 中用于创建事件的确切字符串是什么?
猜你喜欢
  • 2019-12-16
  • 2012-09-23
  • 2013-03-18
  • 2022-07-20
  • 2022-01-03
  • 2019-09-29
  • 2012-11-07
  • 2021-03-09
  • 2018-08-27
相关资源
最近更新 更多