2017-02-10 133 views
1

我有現有的Django項目,我需要得到日期格式化的區域設置非默認。如何獲得沒有語言環境類的Django的語言環境日期?

我不想使用區域設置類,因爲它會影響全局參數,並且會產生意想不到的後果。

有沒有常見的方法來本地化日期沒有語言環境類或我誤解了語言環境是如何工作?

+0

你需要它在模板或在視圖?你想讓你的項目支持多種語言環境([USE_L10N](https://docs.djangoproject.com/en/1.10/ref/settings/#use-l10n)True或False)? – Raz

+0

@Raz我需要這個在我看來。 不,我不需要在多個語言環境支持下,只將日期轉換爲字符串。 USE_L10N = false。 –

+0

比你爲什麼不能直接寫'format_date'函數來調用'strftime'並在需要的地方調用它? – Raz

回答

0

什麼幫助了我,所以它的babel lybrary。

而不是使用的語言環境,這將有全球性的影響:

>>> from datetime import date 
>>> import locale 
>>> d = date(2017, 2, 13) 
>>> locale.setlocale(locale.LC_TIME, "de") 
'de' 
>>> print(d.strftime("%d %B %Y")) 
13 Februar 2017 

我們可以用巴貝爾也不會改變全球locale

>>> from datetime import date 
>>> from babel.dates import format_date 
>>> d = date(2017, 2, 13) 
>>> print(format_date(d, format="d MMMM Y", locale='de_DE')) 
13 Februar 2017 
>>> print(d.strftime("%d %B %Y")) 
13 February 2017 
+0

我沒有得到你想要翻譯月份名稱。我的意思是說你可以只做'd.strftime(「%d%B%Y」)'。 – Raz