Google Calendar API日期过滤不生效,timeMin与timeMax参数使用异常求助
Google Calendar API 时间范围过滤失效问题排查
核心错误原因
你当前请求中的timeMin、timeMax参数末尾携带的Z标识代表该时间为UTC标准时间,该标识的时区优先级高于你单独指定的timeZone=Asia/Calcutta参数,因此API实际按UTC时区的2021-07-15 00:00 ~ 2021-07-17 00:00范围过滤,和Asia/Calcutta时区(UTC+5:30)存在5.5小时的偏差,自然会返回大量你认为超出预期范围的事件。
修复方案
按照以下规则调整请求参数即可:
- 移除
timeMin、timeMax参数末尾的Z后缀,使参数优先级让位于timeZone指定的时区,调整后时间参数格式为timeMin=2021-07-15T00:00:00.000、timeMax=2021-07-17T00:00:00.000 - 新增
singleEvents=true参数:如果你的日历包含重复日程,该参数会将重复日程展开为单条事件实例后再做过滤,避免重复日程母模板只要存在任意符合范围的实例就整体返回,导致出现超出时间范围的结果
修正后请求示例
https://www.googleapis.com/calendar/v3/calendars/EMAIL/events?key=KEY&timeMin=2021-07-15T00:00:00.000&timeMax=2021-07-17T00:00:00.000&timeZone=Asia/Calcutta&singleEvents=true
验证方式
调用后检查返回结果中事件的start.dateTime字段后缀,正常会显示为+05:30,代表时区已正确识别为Asia/Calcutta。
内容的提问来源于stack exchange,提问作者Deepak Kumbhar
相关产品推荐
相关产品推荐

