TIME_ZONE = 'Europe/Paris' # UTC+1
USE_TZ = True
我希望数据库中的所有日期时间都是带有时区信息的,但是即使阅读了Django文档,我仍然不确定正确的方法是什么。
1) 首先,我尝试在所有地方使用timezone.now()
。如果巴黎是12:19,它将返回:datetime.datetime(2016, 3, 16, 11, 19, 51, 842247, tzinfo=<UTC>))
这似乎是正常的行为:Django将日期时间转换为UTC,但是我不确定这是否是好事。我是否在此过程中丢失了一些数据?如何知道这些数据与巴黎时区相关联?
2) 然后,我尝试在所有地方使用localtime(timezone.now())
。这次,如果巴黎是12:19,我会得到一个:datetime.datetime(2016, 3, 16, 12, 19, 37, 372710, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)
这里,日期时间没有被转换,真正的时区信息(巴黎)存储在日期时间中。我认为这是更好的方法,但经过一些搜索,似乎没有人这样处理。我错过了什么吗?
此外,使用第二种解决方案,我真的希望我的对象以+01
后缀存储在PostGreSQL数据库中。但是实际上并没有。这是我的数据库时间戳内容:2016-03-16 11:19:01.093176+00
我不明白如何以正确的方式完成所有这些操作。