【问题标题】:django Datefield is taken as UTC even though I have set it to 'Asia/Kolkata' in postgresql but in DateTimeField is taken time 'Asia/Kolkata' whydjango Datefield 被视为 UTC,即使我在 postgresql 中将其设置为 'Asia/Kolkata' 但在 DateTimeField 中需要时间 'Asia/Kolkata' 为什么
【发布时间】:2021-04-27 20:06:43
【问题描述】:

我的模型

saleDate = models.DateField(auto_now_add=True) #this field taken UTC
saleTime = models.DateTimeField(auto_now_add=True) #this field taken 'Asia/Kolkata

Settings.py

LANGUAGE_CODE = 'zh-cn'

TIME_ZONE = '亚洲/加尔各答'

USE_I18N = 真

USE_L10N = 真

USE_TZ = 真

使用 AWS 孟买区域

【问题讨论】:

  • 将每个字段的实际返回值添加到您的问题中。 Postgres 表中字段的数据类型是什么? DateField 在 Django 中是一个 datetime.date 并且没有时区:`datetime.date.today() datetime.date(2021, 1, 23). A Postgres date` 是一样的:` select '01/23 /2021'::日期; 2021-01-23`.
  • 是的,我在文档中读到了这个,你能建议我一个我想要在 DateField 中相同日期的解决方案 -
  • 您仍然没有显示返回的值是什么。日期没有时区,所以我看不到你认为它在UTC 的位置?

标签: django postgresql amazon-web-services


【解决方案1】:

Django 的 DateField 不支持时区,而 DateTimeField 支持。 DateField 以 date 形式存储在 Postgres 数据库中,而 DateTimeField 以 timestamptz 形式存储。

【讨论】:

  • 是的,我在文档中读到了这个,你能建议我一个我想要在 DateField 中相同日期的解决方案
  • 我建议你使用 DateTimeField 而不是 DateField。
猜你喜欢
  • 2021-04-26
  • 2023-03-04
  • 2013-05-11
  • 1970-01-01
  • 2017-12-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
相关资源
最近更新 更多