gpt4 book ai didi

python - Django 模型的 DateTimeField 正在采用 UTC,即使时区在亚洲/加尔各答无处不在

转载 作者:可可西里 更新时间:2023-11-01 08:02:35 27 4
gpt4 key购买 nike

我正在使用 Django 1.11。我的 settings.py 配置如下:

TIME_ZONE = 'Asia/Calcutta'
USE_I18N = True
USE_L10N = True
USE_TZ = True

这是 IST(印度标准时间)。我的系统设置为 IST。 MySQL current_time 返回IST,Django运行时的服务器,在IST中显示时间戳。 Python 的 datetime.now() 也提供了 IST。

现在的问题是,我的 models.py 有以下字段:

created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

数据库是MySQL。当我在其中插入任何记录时,时间戳都是 UTC。我正在考虑添加一些中间件,正如 this 所建议的那样回答,但这并不是推荐的方式。为什么即使在任何地方都配置了 IST,它仍然采用 UTC?我是否缺少一些需要为模型单独设置的配置?

请注意 this question与我要求的不相似。我想更改整个时区,以便它在模型中也有效。

最佳答案

datetimesalways be stored in UTC如果 USE_TZTrue

唯一的解决方法是将 USE_TZ 设置为 Falseauto_now uses django.utils.timezone.now()is defined to do以下内容:

If USE_TZ is False, this will be a naive datetime (i.e. a datetime without an associated timezone) that represents the current time in the system’s local timezone.

这听起来像您要的。

但是你确定这就是你想要的吗?自 亚洲/加尔各答 had DST in the past有时您根本无法在数据库中明确表示。这就是为什么 UTC 是存储日期时间的标准选择。

关于python - Django 模型的 DateTimeField 正在采用 UTC,即使时区在亚洲/加尔各答无处不在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com