我正在尝试将 ical 数据导入我的 Django 应用程序之一。但它没有考虑夏令时(我认为),所以它显示的时间错了一个小时。如果认为这在冬季有效。这是导入数据的示例:
In [1]: from events.models import Events
In [2]: from icalendar import Calendar
In [3]: cal = Calendar.from_ical(open('/tmp/test.ics', 'rb').read())
20130612T183000
20130612T193000
In [4]: from_ical_dt = cal.walk()[1].get('dtstart').dt # Get first entry
In [5]: from_ical_dt
Out[5]: datetime.datetime(2013, 6, 12, 18, 30, tzinfo=<DstTzInfo 'Europe/Stockholm' CET+1:00:00 STD>)
In [6]: new_event = Events(dtstart=from_ical_dt, title=u'testevent')
In [7]: new_event.save()
In [8]: new_event.dtstart
Out[8]: datetime.datetime(2013, 6, 12, 18, 30, tzinfo=<DstTzInfo 'Europe/Stockholm' CET+1:00:00 STD>)
本次活动原定于18:30举行。到目前为止一切顺利,我想!ical-module 似乎正确导入了它。夏季瑞典为+1 UTC,冬季+2 UTC(现在是夏季时间)。
我还认为 Django 将其正确保存(?)为 17:30 UTC。
In [9]: for e in Events.objects.all():
....: print e.dtstart, e.title
....:
2013-06-12 17:30:00+00:00 testevent
但是,在我的应用程序的管理视图中,这是 19:30:
这是我的 settings.py 中的一些行:
TIME_ZONE = 'Europe/Stockholm'
USE_TZ = True
问题出在哪里?为什么 Django 不将其显示为 18.30?我的实际应用程序模板和管理界面都关闭了一小时。