我的模块中有DateTimeField:
class Pairs(models.Model):
id = models.AutoField(primary_key=True)
timestamp = models.DateTimeField(null=True)
我从python这样插入数据:
timestamp = datetime.fromtimestamp(pair['timestamp'])
tz_aware_datetetime = timestamp.replace(tzinfo=pytz.timezone('Asia/Jerusalem'))
pair_recored =Pairs(session=session_obj,timestamp=tz_aware_datetetime)
pair_recored.save()
我的代码中的时间戳是:
2019-08-15 08:50:07.795000+02:21
但是在我的数据库中,该字段具有不同的值:
2019-08-15 09:29:07.795+03
为什么这些值之间有区别?
答案 0 :(得分:2)
您不应使用.replace()
方法来设置时区,而应使用以下方法:
pytz.timezone('Asia/Jerusalem').localize(timestamp)
如果您知道朴素的时间戳是亚洲/耶路撒冷时区,这是使它知道时区的正确方法。它不会使用LMT+2:21:00 STD
这样的有趣时区,而是使用IDT+3:00:00 DST
(用于DST时间范围内的日期)。