2013-03-11 57 views
0

我已經在我的模板以下ifchanged模板標籤:使用與時區感知日期時間字段

{% for showtime in showtimes %} 
{% ifchanged showtime.start.day %} 
<h3>{{ showtime.start|date:"M d" }}</h3> 
{% endifchanged %} 

showtime.start是一個時區感知DateTimeField字段。問題是,showtime.start.day返回UTC的日期,而showtime.start | date:「M d」在上下文時區中打印日期。

我已經試過如下:

{% ifchanged showtime.start|date:"M d" %} 

因爲ifchanged不能帶參數的處理,以過濾器(甚至1.5)的失敗。我試着玩時區和本地時間,例如。

{% load tz %} 
{% timezone TIME_ZONE %} 
{% for showtime in showtimes %} 
{% ifchanged showtime.start.day %} 
<h3>{{ showtime.start|date:"M d" }}</h3> 
{% endifchanged %} 
{% endtimezone %} 

如預期那些不起作用。有什麼辦法可以改變日期時間的日期版本,或者是否需要自定義過濾器?

+0

嘿,我有完全相同的問題,我想知道你最終做了什麼? 我的問題 http://stackoverflow.com/questions/21199353/ouput-timezone-aware-django-datetime-fields-without-filters – 2014-01-18 04:12:00

回答

0

不幸的是我發現的唯一方法是用一個自定義模板標籤:

{% ifchanged showtime.start|localtime|year_month_day %} 

所以我使用本地時間篩選日期,然後自定義模板標籤返回的年,月,日在適當的時區,這樣ifchanged作品。

@register.filter() 
def year_month_day(value): 
    return "%d-%d-%d" % (value.year, value.month, value.day) 
相關問題