【问题标题】:Google Calendar API events list time zone issueGoogle Calendar API 事件列表时区问题
【发布时间】:2020-12-01 09:24:51
【问题描述】:

自上周中旬以来,我目睹了关于上限和下限的事件列表查询参数的问题越来越多。从周末开始,它根本不再工作。

问题摘要: 事件列表查询参数中不再接受正时区偏移量。

API 调用:

GET https://www.googleapis.com/calendar/v3/calendars/<myCalendarId>/events

带有查询参数:?timeMin=2020-12-01T09:31:04+0100

在 11 月 25 日左右之前的预期行为和行为,在某些服务器上直到 11 月 27 日:

{
    "kind": "calendar#events",
    "etag": "\"blahblah\"",
    "summary": "blahblah",
    "updated": "2020-12-01T07:46:56.357Z",
    "timeZone": "Europe/Berlin",
    "accessRole": "owner",
    "defaultReminders": [
        {
            "method": "popup",
            "minutes": 30
        }
    ],
    "nextSyncToken": "blahblah",
    "items": [
    ...

实际行为/响应正文:

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "badRequest",
                "message": "Bad Request"
            }
        ],
        "code": 400,
        "message": "Bad Request"
    }
}

更多详情: 显然,“错误请求”响应仅由时区偏移前的加号 (+) 引起。将上述请求中的“+”更改为“-”将按预期返回有效响应,只是偏移量错误(在这种情况下应该是两个小时)。 写入带有或不带有“:”的偏移量(例如 +01:00 与 +0100)都不会影响结果。

很可能我错过了正时区偏移量的折旧,或者我使用了错误的时间格式,因为我承认我不是 RFC3339 方面的专家。

另一种选择是 Google 日历团队已在其日历 API 中更新了他们的解析器,并在此之后部署了一个错误。在这种情况下,应将测试用例添加到管道中,以测试包括限制在内的多个时区偏移量。

我很乐意收到有关如何优雅地选择 UTC 以东时区的建议。 提前非常感谢!

【问题讨论】:

    标签: timezone google-calendar-api rfc3339


    【解决方案1】:

    没有这样的弃用,但是当你发出HTTP请求时需要URL encode参数

    示例:

    https://www.googleapis.com/calendar/v3/calendars/primary/events?q=timeMin%3D2020-12-01T09%3A31%3A04%2B0100

    【讨论】:

    • 非常感谢,使用 %2B 可以正常工作。老实说,我之前玩过 URL.encoding,虽然这个要求对于“+”来说显然是正确的,但它不是例如对于“:”和“=”和“&”。这意味着 API 仍然接受这些字符而不进行编码。
    • 最好是继续Try this API,在q字段中输入您的查询并查看生成的cURL窗口(您需要最大化Try this API才能看到它),我将屏幕截图粘贴到我的解决方案中以显示。
    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多