使用Python格式化Google日历API的时间

2 投票
1 回答
3187 浏览
提问于 2025-04-17 20:00

我正在尝试获取一个易于阅读的时间格式,以便列出今天的谷歌日历事件。我可以提取到数据,但在格式化数据时遇到了问题,想要只显示开始时间和结束时间的小时和分钟。

我希望以易于阅读的列表形式展示这些信息,所以我想去掉日期和秒数,只显示时间,并按顺序排列。我尝试了几种不同的方法,包括切片和尝试转换成日期时间,但都没有成功。

date  = datetime.datetime.now()
tomorrow = date.today() + datetime.timedelta(days=2)
yesterday = date.today() - datetime.timedelta(days=1)
now = str
data = '{:%Y-%m-%d}'.format(date)
tdata = '{:%Y-%m-%d}'.format(tomorrow)
ydata = '{:%Y-%m-%d}'.format(yesterday)
def DateQuery(calendar_service, start_date=data,  end_date=tdata):
  print 'Date query for events on Primary Calendar: %s to %s' % (start_date, end_date,)
  query = gdata.calendar.service.CalendarEventQuery('default', 'private', 'full')
  query.start_min = start_date
  query.start_max = end_date
  feed = calendar_service.CalendarQuery(query)
  for i, an_event in enumerate(feed.entry):
    print '\'%s\'' % (an_event.title.text)
    for a_when in an_event.when:
      dstime = (a_when.start_time,)
      detime = (a_when.end_time,)
      print '\t\tEnd time:     %s' % (dstime)
      print '\t\tEnd time:     %s' % (detime)

它打印出来是这样的:

结束时间:2013-03-23T04:00:00.000-05:00

我希望它能变成:

结束时间:04:00

1 个回答

2

使用dateutil模块:

>>> import dateutil.parser
>>> dateutil.parser.parse('2013-03-23T04:00:00.000-05:00')
>>> dt = dateutil.parser.parse('2013-03-23T04:00:00.000-05:00')
>>> dt.strftime('%I:%M')
'04:00'

如果你不想用dateutil模块,也可以用特定的格式来解析字符串,方法是使用strptime

撰写回答