2

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 時間オフになっています。

4

1 に答える 1