自上周中旬以来,我目睹了有关上限和下限的事件列表查询参数的问题越来越多。从周末开始,它根本不再工作。
问题摘要: 事件列表查询参数中不再接受正时区偏移以获取时间界限。
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 以东时区的建议。提前非常感谢!