django时区印刷日期

时间:2013-01-31 12:20:46

标签: 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小时)。但我希望项目时区为'America / Chicago',datetime.now()返回的日期在此时区。所以我只想将显示的所有日期更改为+6小时。我怎么能做到这一点?


修改

好的,这对我有用:

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

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

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

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

我总是使用日期过滤器(dateobject|date:"d M Y H:i"),所以也许有办法全局“挂钩”这个过滤器以将其更改为dateobject|timezone:"Europe/Paris"|date:"d M Y H:i"

2 个答案:

答案 0 :(得分:1)

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

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

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

datetime.astimezone(GMT2())

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

datetime.datetime.now(EST()) 

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

答案 1 :(得分:0)

请参阅:http://docs.djangoproject.com/en/dev/ref/settings/#time-zone

{% now h:ia %}

试试这个..........