2014-02-09 145 views
3

我宣佈DateTimeField字段在我model.py如何在Django模板之外獲取格式化的DateTimeField值?

date = models.DateTimeField(db_index=True, auto_now_add=True) 

我告訴像這樣在我的模板值:

{{comment.date}} 

,這是它的顯示方式:

Feb. 9, 2014, 2:18 p.m. 

顯然django模板引擎自動格式化DateTimeField 值,因爲服務器返回那些類型像這樣的值:

2014-02-09 14:18:54.721021+00:00 

但我應該怎麼做才能返回從 服務器preformated價值?

我正在對服務器進行AJAX調用,並且它自然返回的日期是 而沒有格式。由於我有我的JavaScript文件 以外的模板,我不能只做{{comment.date}}

+0

你的意思是你在AJAX請求上返回* JSON * –

+0

是的,我需要獲取它在模板上顯示的日期:2014年2月9日下午2:18。 – Boel

+1

您必須在JSON響應中更改Datetime序列化或使用[JavaScript i18n目錄](https://docs.djangoproject.com/en/1.6/topics/i18n/translation/#django.views.i18n .javascript_catalog)來格式化客戶端的日期。我也沒有做過,如果我有時間,我會找出一些例子。 –

回答

-1

我知道這是一個古老的問題,但我碰到它,它看起來沒有回答,所以我正在回答這個爲我認爲Martijn想要的其他用戶。

有關datetime strftime的信息,請參見Python文檔here。 日期時間對象可以格式化,如2014年2月9日下午2點18分格式2014-02-09 14:18:54.721021 + 00:00。

formatted_datetime_as_string = comment.date.strftime('%b. %d, %Y, %H:%M %p') 

然後在您的JSON數據中使用formatted_datetime_as_string

1

可能有幾個不同的答案,每個人都有它的優點和缺點。

我來自API世界,我可以有多個API函數使用者。

在你的情況下,你有一個返回結構數據(json)的後端服務,在這種情況下它是goo做傳遞數據,這將獨立於消費者。

JSON沒有日期的任何標準格式,但有ISO-8601,它是人類可讀和結構化的,並且在JavaScript側易於分析,例如, agular.js解析它沒有任何額外的努力,moment.js(這是偉大的),甚至純粹的日期完全有能力讀取它。

so,imho - 用iso-8601去。

有多個答案如何將日期序列化添加到json.dump。