python - 当 DST 时,日期时间对象将不会正确显示

标签 python django django-timezone

我正在尝试将 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

但是,在我的应用程序的管理 View 中,结果显示为 19:30:

View of admin interface

这是我的 settings.py 中的一些行:

TIME_ZONE = 'Europe/Stockholm'
USE_TZ = True

问题出在哪里?为什么 Django 不将其显示为 18.30?我的实际应用程序模板和管理界面都关闭了一小时。

最佳答案

答案在这里:https://code.djangoproject.com/ticket/20602

bla bla 填写完毕,这样我就可以提交了。

关于python - 当 DST 时,日期时间对象将不会正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067550/

相关文章:

python - sqlite3 : can I safely wait with commit()

python - 如何在 DJANGO 中为动态创建的 URL 设置 URL 别名?

python - 为什么 Python 的 json.dumps 拒绝序列化我的对象中的字符串?

django - 替换 "tzinfo"并用localtime打印修改六分钟

django - 停止 Django 将时间转换为 UTC

python - RuntimeWarning : DateTimeField Model. 当时区支持处于事件状态时,日期收到了幼稚的日期时间

python - numpy 例程似乎没有那么快

python - requests 函数到底是做什么的?

python - 将分钟格式的时间列转换为 HH :MM:SS format in pandas 格式的时间

django - 使用 psycopg2 将 django 与 postgresql 连接起来