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