You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Google Calendar API查询不同日历返回不同日期格式问题问询

问题原因
  • Google Calendar API返回的日程时间字段本身存在两种结构,和账号配置无关:
    • 非全天日程会返回dateTime属性,格式为带时区偏移的ISO 8601字符串
    • 全天日程会返回date属性,格式为YYYY-MM-DD格式的纯日期字符串
  • 若两个日历返回的都是非全天日程但格式存在差异,是因为未在查询参数中显式指定时区,API会默认使用对应日历的默认时区返回时间值,即使你认为两个账号时区配置一致,也可能存在后台配置未同步的情况。
解决方案
  1. 显式在查询参数中添加timeZone字段,强制所有返回的时间统一为你需要的时区,示例修改后的参数如下:
params = {
    'calendarId':   self._calendar.id,
    'timeMin':      from_datetime,
    'timeMax':      to_datetime,
    'maxResults':   MAX_APP_DOWNLOADS,
    'singleEvents': True,
    'orderBy':      'startTime',
    'showDeleted':  'true',
    'timeZone':     'Asia/Shanghai' # 替换为你实际需要的IANA标准时区ID
}
  1. 解析日程时间时做兼容判断,适配两种返回格式,示例代码如下:
for event in events:
    start = event['start']
    if 'dateTime' in start:
        # 处理非全天日程
        event_time = start['dateTime']
    else:
        # 处理全天日程
        event_time = start['date']
    # 后续业务逻辑

内容的提问来源于stack exchange,提问作者Matteo Pasini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:06:04