Django 日期时间字段 - 转换为视图中的时区

2024-03-31

我有一个 Django 模型datetime场地。保存时,日期时间字段存储在我的DB丢失时区信息,因此将其另存为naive约会时间。一般来说,这不是问题,因为 Django 在模板中渲染日期时间字段时会自动将其转换回来。

但景色又如何呢?假设我需要日期时间服务器端的字符串表示形式。根据夏季/冬季时间,我的时区可能是 GTM+1 或 GMT+2,这使得事情变得更加困难。

那么我该如何应用视图中的本地 tz 转换?我用 pytz 尝试了几种方法。没有成功,一些条目转换为 GMT+1,其他条目转换为 GMT+2 :(

Eg.

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

附加信息:

  • 姜戈 1.8.7。
  • 设置.USE_TZ = True
  • MySQL
  • 我为什么要这样做?因为我有一个表,它通过 AJAX 按需加载其所有行。我需要在将日期时间值发送给客户端之前使用 strftime() 准备它们。

从这个开始:

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))
  • 如何获取当前时区的当地时间(第二个问题) https://docs.djangoproject.com/en/stable/topics/i18n/timezones/#usage
  • 当地时间() https://docs.djangoproject.com/en/stable/ref/utils/#django.utils.timezone.localtime
  • 获取固定时区() https://docs.djangoproject.com/en/stable/ref/utils/#django.utils.timezone.get_fixed_timezone
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 日期时间字段 - 转换为视图中的时区 的相关文章

随机推荐