我需要在代码中为系统日期时间设置一个值。 在 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
必须是字符串名称。