Postgres DateTimeField时间不正确

时间:2019-08-15 07:36:35

标签: python django postgresql timestamp

我的模块中有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

为什么这些值之间有区别?

1 个答案:

答案 0 :(得分:2)

您不应使用.replace()方法来设置时区,而应使用以下方法:

pytz.timezone('Asia/Jerusalem').localize(timestamp)

如果您知道朴素的时间戳是亚洲/耶路撒冷时区,这是使它知道时区的正确方法。它不会使用LMT+2:21:00 STD这样的有趣时区,而是使用IDT+3:00:00 DST(用于DST时间范围内的日期)。

相关问题