【问题标题】:Events shows wrong time in Google Calendar through api事件通过 api 在 Google 日历中显示错误的时间
【发布时间】:2017-09-15 04:52:11
【问题描述】:

我创建了一个事件,并且还通过了EST 时区。但在我的 Google 日历中,它显示为 3 小时后的时间偏移。

例如,我将值传递为

"start": {
    "dateTime": "2017-10-27T15:00:00-04:00",
    "timeZone": "EST"
},
"end": {
    "dateTime": "2017-10-27T19:00:00-04:00",
    "timeZone": "EST"
}

但是日历中显示的数值是:

"start": {
    "dateTime": "2017-10-27T18:00:00-04:00",
    "timeZone": "EST"
},
"end": {
    "dateTime": "2017-10-27T22:00:00-04:00",
    "timeZone": "EST"
}

这是一个严重的问题。谁能帮帮我,谢谢。

【问题讨论】:

    标签: timezone google-calendar-api


    【解决方案1】:

    一些事情:

    • 不要传递EST。使用tz identifier 的完整Area/Locality 格式。

      • 虽然EST 是有效标识符,但它固定为UTC-5。它实际上只适用于某些向后兼容的场景。
      • 您提供的日期是夏令时,并且是 UTC-4。
      • 假设您指的是美国东部时区,您应该传递 America/New_York 作为时区 ID。
    • 即使考虑到上述情况,您的输出实际上也不应该如上所示。

    【讨论】:

    • 在我的代码中,我将我的 sql.timestamp 转换为 long,然后再转换为 RFC3339 的标准形式。这会改变时区吗?我们可以将时区设置为 Etc/GMT-5 吗?
    • 如你所说,我已经按照你所说的进行了尝试,我已将 TimeZone 设置为“America/New_York”,并通过 api 添加了事件,但它仍然在错误的时间添加。日历的时区设置相应地写入还是我应该通过 api 设置它?
    • 我尝试了另一种方法,我没有在开始和结束参数中给出时区并且事件被正确添加,这是怎么发生的?
    • 请编辑您的问题以包含代码,否则我无法帮助您。我不知道你在说什么。
    • 我要问的是如何在上午 10:00 为特定时区创建事件?
    猜你喜欢
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多