所以,在我的设置中,我有以下内容:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True
TIME_ZONE = 'Europe/Copenhagen'
然而,当我发出:
timezone.now()
datetime.datetime(2015, 9, 26, 8, 47, 15, 862729, tzinfo=<UTC>)
时间晚了两个小时。
我正在阅读文档,我可以看到此方法调用datetime.datetime()并且信息正确。我可以看到输出是基于变量TIME_ZONE,它设置为我当前的位置。那不是timezone.now()得到正确的TIME_ZONE时间吗?
另一个问题:datetime.datetime()是否从服务器获取信息?
答案 0 :(得分:2)
关于时区感知日期时间的重要事项不是它们恰好存储在哪个时区,而是它们代表单个时间点的事实。当这是真的时,它是微不足道的(好吧,可能的,无论如何),以你想要的任何时区显示日期时间。
所以Django的工作方式是所有知道的日期时间都以UTC格式存储。 (即便如此,它们可能会或不会以UTC格式从数据库返回,具体取决于数据库设置。)然后它为您提供工具(例如TIME_ZONE
设置和activate()
)来设置应该的时区在为用户显示呈现模板时使用。
所以你描述的一切都是设计的。它真的会给你带来麻烦吗?
答案 1 :(得分:1)