如何解读Google Calendar API中的datetime参数?

时间:2014-08-23 01:32:48

标签: google-app-engine python-2.7 datetime google-calendar-api

在使用Google日历api进行适当授权后,我尝试了以下代码行:

events = service.events().list(calendarId='qeiopruweqirup@group.calendar.google.com',orderBy='updated',
  timeMin='2014-08-01T00:00:00Z',timeMax='2014-08-31T00:00:00Z',pageToken=page_token).execute()
  for event in events['items']:
    print event['summary'], event['start'], event['end']
  page_token = events.get('nextPageToken')
  if not page_token:
    break

代码工作正常,除了我在下面复制的结果中的一个小怪癖,以说明我的观点:

FakeEvent2 {u'dateTime': u'2014-08-22T01:00:00-04:00'} {u'dateTime': u'2014-08-22T13:00:00-04:00'}
FakeEvent3 {u'dateTime': u'2014-08-27T18:00:00-04:00'} {u'dateTime': u'2014-08-28T06:00:00-04:00'}
FakeEvent1 {u'dateTime': u'2014-08-21T02:00:00-04:00'} {u'dateTime': u'2014-08-21T14:00:00-04:00'}

在发出请求时,我使用datetime格式编码YYYY-MM-DDTHH:MM:SSZ变量。但是,事件的startend次都有一个额外的字符串-04:00。我应该从中做出什么感觉?我猜它意味着4小时,但我很困惑为什么谷歌会这样说。例如,我尝试编写一个简短的函数来查看哪个事件对当前分钟有效。该函数返回一个超过结束时间4小时的事件!例如,如果日历中的条目从早上8点到早上9点,则该条目会显示在is there an active event during (11:45 am, 11;46 am)?的查询中。

为什么不坚持指定startend的标准方式?这个 A-B 指定某个时间点的方式的优势是什么?我无法找到我可以通过Google阅读更多有关此数据类型的参考资料。

1 个答案:

答案 0 :(得分:2)

事件列表操作将为您提供日历时区偏移量的事件。如果您只想处理以UTC格式返回的事件,可以为列表请求https://developers.google.com/google-apps/calendar/v3/reference/events/list

指定timezone参数

另请参阅RFC 3339 http://tools.ietf.org/html/rfc3339中的时间定义以了解偏移量(-04:00)