0

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

问题摘要: 事件列表查询参数中不再接受正时区偏移以获取时间界限。

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 的专家。

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

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

4

1 回答 1

1

没有这样的弃用,但是当您发出 HTTP 请求时,您需要对参数进行URL 编码

样本:

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

在此处输入图像描述

于 2020-12-01T09:52:54.853 回答