python - Postgres DateTimeField 时间不正确

标签 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

为什么这些值之间存在这种差异?

最佳答案

你不应该使用 .replace() 方法来设置时区,而是使用这个:

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

如果您知道原始时间戳是 Asia/Jerusalem 时区,这是让它识别时区的正确方法。它不会使用这些有趣的时区,例如 LMT+2:21:00 STD,而是使用 IDT+3:00:00 DST(对于 DST 时间范围内的日期) .

关于python - Postgres DateTimeField 时间不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57506290/

相关文章:

Django Queryset - 按字母顺序排序然后将特定条目移动到顶部

sql - 从 PostgreSQL 中的行生成系列

java - 有没有类似preparedStatement.setDefault()的东西?

python - 资源警告 : unclosed file <_io. BufferedReader 名称=4>

python - Django allauth 使用注册表单保存自定义用户字段

javascript - 如何解决ajax请求后问题?

ruby-on-rails - 日志数据分析 : Choice of Database

python - 默认检查同一个表的列

python - 我想知道这个Python程序发生了什么。我已经包含了代码

python - Django OneToOneField 初始化