Google 日历 API 事件列表时区问题
Google Calendar API events list time zone issue
自上周中旬以来,我发现事件列表查询参数的上限和下限问题越来越多。自周末以来,它根本不再工作。
问题总结:
时间范围的事件列表查询参数中不再接受正时区偏移量。
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"
}
}
更多详情:
显然,“错误请求”响应仅由时区偏移前的加号 (+) 引起。将上述请求中的“+”更改为“-”将 return 得到预期的有效响应,只是偏移量是错误的(在本例中应该是两个小时)。
写入带或不带“:”的偏移量(例如 +01:00 与 +0100)不会影响结果。
很可能我错过了正时区偏移量的贬值之类的东西,或者我使用了错误的时间格式,因为我公认不是 RFC3339 方面的专家。
另一种选择是 Google 日历团队更新了他们的日历 API 中的解析器,并在此之后部署了一个错误。在这种情况下,应将测试用例添加到管道中以测试多个时区偏移量,包括限制。
我很乐意收到有关如何优雅地 select 和 UTC 以东时区的建议。
提前致谢!
没有这样的弃用,但是当你发出 HTTP 请求时你需要 URL encode 参数
样本:
https://www.googleapis.com/calendar/v3/calendars/primary/events?q=timeMin%3D2020-12-01T09%3A31%3A04%2B0100
自上周中旬以来,我发现事件列表查询参数的上限和下限问题越来越多。自周末以来,它根本不再工作。
问题总结: 时间范围的事件列表查询参数中不再接受正时区偏移量。
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"
}
}
更多详情: 显然,“错误请求”响应仅由时区偏移前的加号 (+) 引起。将上述请求中的“+”更改为“-”将 return 得到预期的有效响应,只是偏移量是错误的(在本例中应该是两个小时)。 写入带或不带“:”的偏移量(例如 +01:00 与 +0100)不会影响结果。
很可能我错过了正时区偏移量的贬值之类的东西,或者我使用了错误的时间格式,因为我公认不是 RFC3339 方面的专家。
另一种选择是 Google 日历团队更新了他们的日历 API 中的解析器,并在此之后部署了一个错误。在这种情况下,应将测试用例添加到管道中以测试多个时区偏移量,包括限制。
我很乐意收到有关如何优雅地 select 和 UTC 以东时区的建议。 提前致谢!
没有这样的弃用,但是当你发出 HTTP 请求时你需要 URL encode 参数
样本:
https://www.googleapis.com/calendar/v3/calendars/primary/events?q=timeMin%3D2020-12-01T09%3A31%3A04%2B0100