datetime.now() 从 Django 应用程序运行时返回 UTC-5:00 值,但在 Python 中从终端运



我需要在代码中为系统日期时间设置一个值。 在 django 应用程序中的 settings.py 中,我已经评论了 TIME_ZONE 和 USE_TZ= True。

在我的文件中,代码如下所示:

import datetime
checkedin_dt = datetime.datetime.now()
logger.info(checkedin_dt) # -- gives me a value that is utc-5:00

但是,当我在python终端中运行相同的东西时,它会为我提供正确的systemdatetime。 我希望我的代码获取系统日期时间而不在 settings.py 中设置任何特定时区

知道为什么这在代码中不起作用。数据库是sqlite,应用程序是django应用程序。

设置USE_TZ = True并使用timezone()

from django.utils import timezone
checkedin_dt = timezone.now()

文档:https://docs.djangoproject.com/en/3.0/topics/i18n/timezones/

Django 没有确定系统时区的方法,但你可以使用 tzlocal 包来实现这一点。

我自己从未尝试过,但我认为您可以通过在设置文件中执行以下操作来获得所需的内容:

from tzlocal import get_localzone
TIME_ZONE = get_localzone().zone

如果无法确定时区的名称,它仍然可能会失败,因为TIME_ZONE必须是字符串名称。

相关内容

最新更新