【问题标题】:Django - returning German date with strftimeDjango - 使用 strftime 返回德国日期
【发布时间】:2018-10-12 12:37:59
【问题描述】:

我有这个代码:

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

program 是我的模型,last_registration_date 是来自 DateTimeField 的正常值

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

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

那么,谁能帮我把这个日期变成德语?

【问题讨论】:

    标签: python django date strftime


    【解决方案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
    

    请注意 cmets 中的两个链接,它们将引导您找到正确配置的列表,这些配置因不同的部件而异!

    在您的settings.py 中添加:

    FORMAT_MODULE_PATH = 'demo_time_set.formats'
    

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

    【讨论】:

    • 谢谢你,非常感谢你的努力,但我为自己找到了一个更简单的解决方案:)
    【解决方案2】:

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

     date = date_format(program.last_registration_date)
    

    这对我来说没有问题。

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2010-10-17
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多