我有一个mysqlDATETIME
存储在系统时间 UTC 中的值。我需要将其转换为 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值?
The Django 时区文档 https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#time-zones记录转换所需的所有详细信息datetime
对象到适当的时区进行显示。
您的数据存储在 UTC 中,这很好。当你获得一个DateTime
从数据库中获取字段对象这将是一个幼稚的想法datetime.datetime
目的。即不附加时区的日期/时间。然后由您来进行转换。
您的网络应用程序的用户可能位于不同的时区,因此必须转换为适当的时区每个请求。这就是为什么有一个activate https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.activate功能设置当前时区。
如果你有pytz http://pytz.sourceforge.net/安装后您应该能够执行以下操作:
from django.utils.timezone import activate
activate(settings.TIME_ZONE)
模板引擎中日期字段的所有输出都会自动将您的原始日期时间对象转换为正确的时区以供显示。
如果你只有一个天真datetime.datetime
您想要设置时区的实例,然后只需使用pytz
直接模块。不过,在您的视图中执行此操作并不正常,因为最好仅在演示时转换时区。
from pytz import timezone
settings_time_zone = timezone(settings.TIME_ZONE)
last_updated = last_updated.astimezone(settings_time_zone)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)