Django アプリの 1 つに ical データをインポートしようとしています。しかし、それは DST を考慮していない (私が思うに) ため、時刻が 1 時間間違って表示されます。これが冬の間うまくいったと思うなら。これは、データのインポートのサンプルです。
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 と表示しないのはなぜですか? 実際のアプリケーション テンプレートと管理インターフェイスの両方が 1 時間オフになっています。