python - 用于打印日期的 django 时区

标签 python django datetime django-timezone

我在 settings.py 中设置了 TIME_ZONE = 'America/Chicago' 的 django 项目。

我正在使用这样的日期:

from django.utils.dateparse import parse_datetime
import datetime
from datetime import datetime

dateobject = parse_datetime(some_string)
now = datetime.now()
if now > dateobject:
    # do something

然后在模板中我使用:

dateobject|date:"d M Y H:i"

我只想在不同时区(例如 +6 小时)的所有模板中显示日期。但我希望项目时区为“美国/芝加哥”,并且 datetime.now() 返回的日期在这个时区内。所以我只想将所有显示的日期更改为 +6 小时。我如何才能做到这一点?


编辑

好的,这对我有用:

{% load tz %}
{{ datetimevalue|timezone:"Europe/Paris" }}

它以 +1 小时打印日期。但这不起作用:

{% load tz %}
{% timezone "Europe/Paris" %}
{{ datetimevalue }}
{% endtimezone %}

它打印日期不变。我必须为所有模板全局设置它。我该怎么做?

我总是使用日期过滤器 (dateobject|date:"d M Y H:i") 所以也许有什么办法可以全局“ Hook ”这个过滤器以将其更改为 dateobject|timezone :"欧洲/巴黎"|日期:"d M Y H:i" ?

最佳答案

这更像是一个 python 问题,您可以使用 timedelta 变量将时间添加到 datetime。例如

import datetime
b = datetime.datetime.now() + datetime.timedelta(hours=n)

或者您可以直接更改datetime的时区,例如:

datetime.astimezone(GMT2())

或者使用 now 函数中的 tzinfo 变量:

datetime.datetime.now(EST()) 

因此,必须在将某些内容传递给模板之前完成这些更改。

关于python - 用于打印日期的 django 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625662/

相关文章:

PHP显示存储的时间数据,并在考虑不同时区的同时存储时间数据

ruby-on-rails - 从 Rails 到 Flex 的日期/时间转换问题?

django - Django 中的自定义用户注册表单

django - 跨表序列化 Django REST Framework

Django Haystack - 未设置拼写建议上下文变量

MySQL 日期时间案例

python - 将方法列表中的方法应用到 Pandas 数据框

python - 传递参数时重定向

python - 在 Python 中将 CSS ":contains:"与 WebDriver 结合使用

python - “FavoriteManager”对象没有属性 'get_query_set'