Django datetime字段-在vi中转换为时区

2024-06-26 01:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有datetime字段的Django模型。保存时,存储在myDB中的datetime字段将丢失时区信息,因此将其保存为天真的日期时间。一般来说,这不是问题,因为Django在呈现模板中的datetime字段时会自动将其转换回。

但是风景怎么样?假设我需要datetime服务器端的字符串表示。根据夏季/冬季的时间,我的时区可能是GTM+1或GMT+2,这使得事情变得更加困难。

那么如何在视图中应用局部tz转换呢?我试过几种方法来对付皮茨。没有成功,某些条目转换为GMT+1,其他条目转换为GMT+2:

例如

system_tz = pytz.timezone('Europe/Berlin')
local_dt = item.created_at.astimezone(system_tz)
local_dt = system_tz.normalize(local_dt)

其他信息:

  • Django 1.8.7。
  • settings.USE_z=真
  • MySQL数据库
  • 我为什么要这么做?因为我有一个通过AJAX按需加载所有行的表。在发送给客户机之前,我需要用strftime()准备日期时间值。

Tags: django模型模板信息datetimelocal时间dt
2条回答
from django.utils import timezone

local_dt = timezone.localtime(item.created_at, pytz.timezone('Europe/Berlin'))

连接到UTC+1:

from django.utils import timezone

local_dt = timezone.localtime(item.created_at, timezone.get_fixed_timezone(60)

不需要使用django.utils在时区之间进行转换:

berlin = pytz.timezone('Europe/Berlin')
local_dt = item.created_at.astimezone(berlin)

然而,如果您通常只使用一个时区,则可以方便地将其存储在settings.TIME_ZONE = 'Europe/Berlin'中,然后

local_dt = timezone.localtime(item.created_at)

将其转换为本地时间。

相关问题 更多 >