Django - 用strftime返回德国日期

时间:2018-05-02 11:50:48

标签: python django date strftime

我有这段代码:

 date = program.last_registration_date.strftime('%d %B %Y, %H:%M')

program是我的模型,last_registration_date是来自DateTimeField

的正常值

现在我的问题是日期返回英文日期,我不想要。在default.py我正确设置了TIME_ZONE('Europe / Berlin'),我的LANGUAGE_CODE('de')和ofc USE_L1ON设置为True。但它仍然不是德国人。

我尝试导入语言环境并在导入后使用setlocale,但这也不起作用(只显示一个错误,即语言环境是不受支持的设置)。

那么,任何人都可以帮助我如何将这个日期变成德语?

2 个答案:

答案 0 :(得分:1)

确保您在Django项目中正确配置了settingsformats。示例项目的结构:

.
|-- README.md
|-- demo.db
|-- demo_time_set
|   |-- __init__.py
|   |-- demo.db
|   |-- formats
|   |   |-- __init__.py
|   |   `-- en
|   |       |-- __init__.py
|   |       `-- formats.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
|-- manage.py
|-- requirments.txt
`-- some_app
    |-- __init__.py
    |-- admin.py
    `-- models.py

您可以通过提供具有适当名称和formats.py的目录来为多种语言定义它。 所有MAGIC发生的formats.py示例内容如下所示:

# HERE FORMATING AS shown in:
# LIST: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
DATE_FORMAT = 'd-m-Y'
TIME_FORMAT = 'H:i'
DATETIME_FORMAT = 'd-m-Y H:i'
YEAR_MONTH_FORMAT = 'F Y'
MONTH_DAY_FORMAT = 'F j'
SHORT_DATE_FORMAT = 'm/d/Y'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
FIRST_DAY_OF_WEEK = 1

# BUT here use the Python strftime format syntax,
# LIST: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

DATE_INPUT_FORMATS = (
    '%d-%m-%Y',     # '21-03-2014'
)
TIME_INPUT_FORMATS = (
    '%H:%M:%S',     # '17:59:59'
    '%H:%M',        # '17:59'
)
DATETIME_INPUT_FORMATS = (
    '%d-%m-%Y %H:%M',     # '21-03-2014 17:59'
)

DECIMAL_SEPARATOR = u'.'
THOUSAND_SEPARATOR = u','
NUMBER_GROUPING = 3

请注意评论中的两个链接,它们将引导您找到正确配置的列表,这些配置对于不同的部分是不同的!

settings.py中添加:

FORMAT_MODULE_PATH = 'demo_time_set.formats'

[GITHUB]以下是一个完整的工作示例:https://github.com/andilab/demo_time_set

答案 1 :(得分:0)

好的,所以我想出来,只是删除了strftime使用:

 date = date_format(program.last_registration_date)

对我来说没有问题。