我有一个存储在系统时间UTC中的MySQLDATETIME值.我需要将其转换为我在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

如何获取本地时区="美国/洛杉矶"中的最后一次_更新值?

推荐答案

Django documentation for timezones记录了将datetime个对象转换为适当时区以进行显示所需的所有详细信息.

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

您的Web应用程序的用户可能在不同的时区,因此必须为each request转换到适当的时区.这就是为什么有一个activate函数来设置当前时区的原因.

如果安装了pytz个,您应该能够执行以下操作:

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

然后,模板引擎中日期字段的所有输出都会自动将原始日期时间对象转换为正确的时区进行显示.

如果你只有一个naive datetime.datetime实例想要设置时区,那么直接使用pytz模块即可.不过,在视图中这样做是不正常的,因为只在演示时转换时区是个好主意.

from pytz import timezone

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

Django相关问答推荐

DRF中是否有有效的更新有序数据的算法?

Django Prefetch上的多重过滤

Django没有显示变量

如何使更新记录在 Django 模型中传递信号?

在不指定查找的情况下调用 prefetch_lated() 有用吗?

来自日历的 Django 动态 url

在Django测试get方法中获取HttpResponseNotFound

lower() 在 None 上被调用

如何计算 Django 模型中特定对象的数量?

基于每个条目的 Django Queryset 过滤

如何访问 Django Rest Framework 上的自定义 HTTP 请求标头?

如何在 django 中生成 url

创建新内容类型时出错.请确保在try 单独迁移应用程序之前迁移内容类型

Django UrlResolver,在运行时添加 url 进行测试

OrderingFilter 没有属性filter_queryset

Django ORM 能否以可靠的与后端无关的方式存储无符号 64 位整数(又名 ulong64 或 uint64)?

使用直通模型了解 Django 中的多对多字段

在 Django Admin 中过滤多对多框

响应发送到客户端后在 Django 中执行代码

Django - 指定 Django 管理员应该使用哪个模型管理器