无法在模板中将 UTC 时间戳转换为本地时间

Posted

技术标签:

【中文标题】无法在模板中将 UTC 时间戳转换为本地时间【英文标题】:Unable to convert UTC timestamp to local time in templates 【发布时间】:2020-11-19 17:29:24 【问题描述】:

我无法使用 Django 文档中提供的模板标签将此时间戳值转换为本地时间:

 % load tz %
 % get_current_timezone as TIME_ZONE %
  private_message.timestamp|timezone:TIME_ZONE|date:'m/d/Y: h:i a' 

我尝试了许多不同的模板标签,包括load localtime 等。无论如何,时间仍然显示为 UTC。

设置:

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

我在views.py中将时间戳保存为timezone.now()

任何帮助将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

关键是,您的时区仍设置为 UTC。

TIME_ZONE = 'UTC'

所以,对于像 UTC+2 这样的东西,你可以使用

TIME_ZONE = 'Europe/Istanbul'

您可以访问所有有效时区here。

Reference

编辑

您可以尝试使用它来获取本地日期吗?

from django.utils.timezone import localtime, now

# get now datetime based upon django settings.py TZ_INFO
localtime(now())

【讨论】:

但是没有办法以UTC格式存储数据,然后在模板中为用户本地转换时间吗? @winston 你找到解决方案了吗?

以上是关于无法在模板中将 UTC 时间戳转换为本地时间的主要内容,如果未能解决你的问题,请参考以下文章

Debezium 时间戳问题,无法转换为本地时区

将UTC时间戳转换为熊猫中的本地时区问题

在 Python 中将 datetime.date 转换为 UTC 时间戳

在 Ruby 中将 UTC 时间戳转换为 ISO 8601

如何将角度 UTC 时间戳转换为本地时间戳? [复制]

在 VBA 中,如何以简单的方式将 UTC UNIX 时间戳转换为本地时区日期?