2013-07-18 53 views
6

Django的時區感知輸出顯然爲only applies when rendering a template。有沒有辦法讓返回CSV或JSON的響應進入到當前活動時區的自動轉換?模板之外的Django時區支持

+0

您是否在尋找一個Django設置?或者一些python特定的代碼?也許嘗試使用pytz? –

+0

不,我希望獲得與向用戶發送CSV或JSON響應時在模板中看到的相同的自動轉換行爲。 – Tom

+0

我不相信模板之外有任何自動轉換......您將不得不手動執行它。 –

回答

1

在模板中調用將日期時間轉換的底層函數似乎是django.utils.timezone.template_localtime()。緊挨着它的來源是另一個實用功能,localtime,它看起來像:

def localtime(value, timezone=None): 
    """ 
    Converts an aware datetime.datetime to local time. 

    Local time is defined by the current time zone, unless another time zone 
    is specified. 
    """ 
    ... 

因此,或許下面將工作:

from django.utils.timezone import localtime, get_current_timezone 

... 

print localtime(obj.date_created, user.get_profile().timezone or get_current_timezone()) 
+0

不錯,我會在某個時候嘗試一下。謝謝。 – Tom