我在自己的时区很难获得queryset结果。 例如: 模型字段定义:
some_datetime_field= models.DateTimeField(null=True)
查询:
MyModel.values_list("some_datetime_field",flat=True).first()
返回
datetime.datetime(2019,11,5,14,56,16,tzinfo=<UTC>)
而不是返回
datetime.datetime(2019,6,tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day,16:00:00 STD>)
我正在使用python V3.7.5,Django V2.2.7和 PostgreSQL V12 作为数据库。 在我的设置中,我有:
TIME_ZONE = "America/Los_Angeles"
USE_TZ = True
USE_I18N = True
USE_L10N = True
从文档中可以看到有关“ TIME_ZONE”设置的信息:(https://docs.djangoproject.com/en/2.2/ref/settings/#time-zone)
当USE_TZ为True且数据库支持时区(例如PostgreSQL)时,设置此选项是错误的。
所以我尝试从设置中删除TIME_ZONE:
USE_TZ = True
USE_I18N = True
USE_L10N = True
但这还是没有用,更糟糕的是,当我尝试使用timezone.localtime(datetime_example)
对其进行本地化时,我得到了芝加哥时间:
datetime.datetime(2019,8,tzinfo=<DstTzInfo 'America/Chicago' CST-1 day,18:00:00 STD>)
如何将查询设置为在所选时区而不是UTC返回DateTime?