【问题标题】:convert datetime to local in Django在 Django 中将日期时间转换为本地时间
【发布时间】:2021-03-18 03:55:36
【问题描述】:

在我的 postgresql 数据库中,我的日期时间存储为以下格式:

>>> p.publish
datetime.datetime(2020, 12, 6, 6, 19, 36, 269492, tzinfo=<UTC>)

现在我想在本地显示时间

{% load tz %}
{{ post.publish|localtime }}

什么都没有发生。 然后我尝试在shell中做到这一点:

from tzlocal import get_localzone
local_timezone = get_localzone()
pytz.utc.localize(p.publish,is_dst=None).astimezone(local_timezone)

这给了我以下错误:

ValueError: Not naive datetime (tzinfo is already set)

所以我的问题是为什么当 tzinfo 已经设置时它不能转换时间日期,以及如何解决它。将数据存储在具有特定时区(此处为UTC)的数据库中,然后在需要时将其显示在不同的时区中,这难道不是重点吗?我在这里遗漏了什么吗?

【问题讨论】:

  • 什么是local_timezone?时区对象?
  • 也许是localtime 而不是local
  • 谢谢我和两个 cmets 联系了,确实是当地时间

标签: django pytz


【解决方案1】:

如果tzinfo 已设置,您可以将其替换为您要设置的那个。

例如:

import pytz
utc = pytz.UTC
_today_date.replace(tzinfo=utc)

这里,_todate_datedatetime 对象。

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多