我只是想知道我哪里做错了什么。所以这就是场景。
我有一个字段date = DateField()
,然后我想将其更改为d ate = DateTimeField()
,而不会丢失从中存储的数据。
我做了什么:
temp = DatetimeField()
,然后通过datamigration将值从date = DateField()
传输到temp date = DateField()
date = DateTimeField()
temp
转移到date
一切都很好,没有错误。但有一点发生了变化,the value
。
例如:
旧数据:datetime.date(2014, 5, 5)
新数据:datetime.datetime(2014, 5, 4, 12, 0, tzinfo=UTC)
所以我的问题是,它为什么会改变并且距离原始值deduct 1
天?有什么想法吗?是因为时区吗?时区设置为Pacific/Auckland
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
太平洋/奥克兰的GMT偏差 UTC + 12 (小时)。
datetime.datetime(2014, 5, 4, 12, 0, tzinfo=UTC)
代表中午UTC 4日。但由于这个消息,这是在奥克兰的午夜。然而,奥克兰的午夜实际上是“小时0”在5日。
所以,是的,这个问题确实与时区有关,但实际上并不是问题。日期没有改变,只是在不同的时区表达。
当然,您可以回滚迁移,并且在步骤1中对时区进行不同的考虑,将date
转换为datetime
。