2015-09-01 85 views
2

我有一個完全國際化的django應用程序,我們使用的日期字段也應該是相應語言的格式。現在我遇到了必須根據當前語言解析不同日期格式的問題。Django本地化日期解析

我已經試過這樣:

from django.utils import formats, translation 
format_code = formats.get_format("SHORT_DATE_FORMAT", lang=translation.get_language()) 

它返回當前使用的日期格式(例如,德國「DMY」),但我需要它的日期格式我可以datetime.strptime解析(例如「 %d。%米。%Y「)。我怎樣才能得到這個?

回答

0

看到這個從文檔:

{% load i18n %} 

{% get_current_language as LANGUAGE_CODE %} 
<!-- Current language: {{ LANGUAGE_CODE }} --> 
<p>{% trans "your date here" %}</p> 

{% language 'en' %} 
    {% get_current_language as LANGUAGE_CODE %} 
    <!-- Current language: {{ LANGUAGE_CODE }} --> 
    <p>{% trans "your date format here" %}</p> 
{% endlanguage %} 

退房文檔瀏覽:Switching language in templates

+1

很抱歉,但我不明白這怎麼能解決我的問題。我不會翻譯我的日期格式。我搜索一個選項來獲取當前的dateformat與datetime.strftime配合使用。 –

1

目前,我發現最好的辦法是這樣的:

from datetime import datetime 
from django.utils import formats 

def parse_locale_date(formatted_date): 
    parsed_date = None 
    for date_format in formats.get_format('DATE_INPUT_FORMATS'): 
     try: 
      parsed_date = datetime.strptime(formatted_date, date_format) 
     except ValueError: 
      continue 
     else: 
      break 
    if not parsed_date: 
     raise ValueError 
    return parsed_date.date()