Django DateTimeField,包含时区信息



我有一个Django模型,它有一个DateTimeField,后端是postgres 9.3数据库。

measure_datetime = models.DateTimeField()

在我的数据库中,这创建了一个类似的列

ALTER TABLE geoudis_weathermeasurements ADD COLUMN measure_datetime timestamp with time zone;

类型

timestamp with time zone

正如您所看到的,它将日期时间与时区存储在一起。我用不同的工具插入了数据。当我做一个像这样的简单查询时

SELECT measure_datetime from geoudis_weathermeasurements where "id" = 44525
"2014-10-01 00:04:54+02"

这看起来不错。现在我从Django中查询数据,这会为同一行返回一个带有UTC时区的Datetime对象

2014-09-30 22:04:54+00:00 
tzinfo=UTC
_utcoffset=0:00:00

所以看起来原来的时区信息已经不见了。当然,我可以将其设置为不同的时区,但如果我不知道数据是在哪个时区测量的呢?用于显示数据的服务器可以位于不同的时区。因此,我认为这个postgres数据类型(带时间戳的时区)很适合。

我是不是做错了什么?感谢您的帮助或建议。

第1版:

如果我在settings.py中设置USE_TZ=False,我会得到我想要的结果。在我看来,这种行为是姜戈有意为之。

我根本不了解Django,但我可以告诉你,如果你不知道数据是在哪个时区(UTC偏移量)测量的,那么你就不知道时间!

以下是您的选择:

  1. 请确保仅使用UTC(或使用一个UTC偏移量)。这是最好的,但你不能总是选择你得到的
  2. 只能使用当地时间这真的很麻烦(计算机更改位置,用户更改时区设置,夏令时开关,…)

相关内容

  • 没有找到相关文章

最新更新