gpt4 book ai didi

python - 在 django 中获取本地时区

转载 作者:IT老高 更新时间:2023-10-28 22:13:23 24 4
gpt4 key购买 nike

我有一个存储在系统时间 UTC 中的 mysql DATETIME 值。我需要将其转换为 django 中的本地时区。这是我目前拥有的:

# value in mysql
`timestamp`
2013-02-01 22:48:45

# settings.py
TIME_ZONE = 'America/Los_Angeles'

# views.py
last_updated = PathLastUpdated.objects.all()[0].timestamp
print last_updated
2013-02-01 22:48:45 <-- same as UTC

如何让 last_updated 值位于我的本地时区 = "America/Los Angeles"中?

最佳答案

Django documentation for timezones记录将 datetime 对象转换为适当时区以进行显示的所有必要细节。

您的数据以 UTC 格式存储,这很好。当您从数据库中获取 DateTime 字段对象时,它将是一个简单的 datetime.datetime 对象。即没有附加时区的日期/时间。然后由您来完成转换。

您的 web 应用程序的用户可能位于不同的时区,因此对于每个请求,都必须转换为适当的时区。这就是为什么有 activate设置当前时区的函数。

如果您有 pytz安装了你应该能够做到以下几点:

from django.utils.timezone import activate
activate(settings.TIME_ZONE)

模板引擎中日期字段的所有输出将自动将您的原始日期时间对象转换为正确的时区以进行显示。

如果您只有一个简单的 datetime.datetime 实例来设置时区,那么只需直接使用 pytz 模块。但是,在您的 View 中这样做是不正常的,因为最好只在呈现时转换时区。

from pytz import timezone

settings_time_zone = timezone(settings.TIME_ZONE)
last_updated = last_updated.astimezone(settings_time_zone)

关于python - 在 django 中获取本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14657173/

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