如何在Python中处理iCal标准记录中的时区差异?

1 投票
1 回答
1455 浏览
提问于 2025-04-16 17:38

我正在尝试处理来自python gdata API的ical重复记录。

DTEND: 20110421T190000
params for  DTEND:
   TZID [u'Europe/London']
DTSTART: 20110421T180000
params for  DTSTART:
   TZID [u'Europe/London']
RRULE: FREQ=WEEKLY;BYDAY=TH
VTIMEZONE
   TZID: Europe/London
   DAYLIGHT
      DTSTART: 19700329T010000
      TZOFFSETFROM: +0000
      TZNAME: BST
      TZOFFSETTO: +0100
      RRULE: FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
   STANDARD
      DTSTART: 19701025T020000
      TZOFFSETFROM: +0100
      TZNAME: GMT
      TZOFFSETTO: +0000
      RRULE: FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU

   X-LIC-LOCATION: Europe/London

从这个事件中,我可以看到时间段应该是17:00到18:00(英国夏令时),但DTSTART/DTEND似乎列出了格林威治标准时间(GMT),然后需要“标准”来纠正这个问题?

我正在尝试在python中设置一个自动化的过程来“读取”这些重复记录,并将它们复制为实际的日期和时间。

有什么好的方法可以确保准确性吗?我知道dateutil可以解析时区信息,但我该选择哪个时区,最重要的是我该如何应用这个更改,以便得到一个带有“真实”时间的python日期时间对象?

谢谢 :)

1 个回答

0

我之前用过Pytz,效果很好:http://pytz.sourceforge.net/

撰写回答