Python中Google Calendar API日期输出格式修改求助
解决Google Calendar API日期格式修改问题
我来帮你搞定这个日期格式的调整!Google Calendar API返回的日期数据分两种情况:带具体时间的dateTime(通常带时区)和全天事件的date,咱们针对性处理就能得到你想要的格式。
首先,先回忆下你获取事件的核心代码,大概是这样的:
# 假设已经创建好service服务对象 events_result = service.events().list( calendarId='primary', timeMin='2024-05-01T00:00:00Z', maxResults=10, singleEvents=True, orderBy='startTime' ).execute() events = events_result.get('items', [])
之前你尝试dateutil和strftime没成功,大概率是没正确处理API返回的日期类型——要么是带时区的字符串,要么是已经转成的datetime对象,咱们分情况处理:
方法1:处理RFC3339格式字符串(最常见)
如果API返回的start字段是类似2024-05-20T14:30:00+08:00的字符串,先通过dateutil.parser解析成datetime对象,再用strftime格式化:
from dateutil import parser for event in events: # 获取事件的起始日期/时间 start_raw = event['start'].get('dateTime', event['start'].get('date')) # 解析为datetime对象 start_dt = parser.parse(start_raw) # 格式1:yyyy-mm-dd formatted_date_ymd = start_dt.strftime('%Y-%m-%d') # 格式2:Apr 15, 2018 风格 formatted_date_month = start_dt.strftime('%b %d, %Y') # 输出你想要的格式,二选一即可 print(f"{formatted_date_ymd} {event['summary']}") # print(f"{formatted_date_month} {event['summary']}")
方法2:直接处理已转换的datetime对象
如果你的googleapiclient版本会自动把dateTime字段转换成带时区的datetime对象,那直接格式化就行,不用额外解析:
for event in events: start_dt = event['start'].get('dateTime', event['start'].get('date')) # 同样生成两种格式 formatted_date_ymd = start_dt.strftime('%Y-%m-%d') formatted_date_month = start_dt.strftime('%b %d, %Y') print(f"{formatted_date_ymd} {event['summary']}")
注意事项
- 如果还没安装
python-dateutil,先执行pip install python-dateutil - 对于全天事件,
date字段本身就是yyyy-mm-dd的字符串,直接用也可以,解析成datetime再格式化结果一致
这样调整后,就能完美输出你想要的日期格式啦!
内容的提问来源于stack exchange,提问作者Jae Park




