【问题标题】:Add a new datetime format to the django formats list将新的日期时间格式添加到 django 格式列表
【发布时间】:2020-01-29 10:39:31
【问题描述】:

我使用 settings.py 中的 Django 格式来跟踪所有日期时间格式,以便它们保持一致。我的设置文件中有各种格式,例如:

settings.py

USE_L10N = False # False = Use own formats below.
DATETIME_FORMAT = "d M Y, H:i"
DATE_FORMAT = "j M Y"
TIME_FORMAT = "H:i:s"
SHORT_DATETIME_FORMAT = "Y\u2011m\u2011d H:i:s"
SHORT_DATE_FORMAT = "Y\u2011m\u2011d"
MONTH_DAY_FORMAT = "n M"
YEAR_MONTH_FORMAT = "Y M"

然后使用它们:

from django.utils import formats, timnezone
formats.date_format(timezone.now(), 'SHORT_DATETIME_FORMAT')

有几次我希望添加另一种格式,例如在文件名中使用日期时间需要不同的格式(在这种情况下我可以执行替换,但这只是一个示例):

FILE_DATETIME_FORMAT = "Y-m-d H.i.s"

关于上述: * 注意1:如果放在settings.py中是不行的

与这个question密切相关,但是这个问题只是定义了一个自定义格式,这不是我想要的。我想使用 django 的格式系统,所以只有一个事实来源。

问题摘要:如何将新的日期时间格式添加到 django 格式列表(而不是其他一些解决方法)。

【问题讨论】:

    标签: python django datetime timezone


    【解决方案1】:

    在考虑它的同时,我想出了这个“hack”,希望有更好的(官方或推荐的)方法来做到这一点:

    settings.py:

    new_formats = {'FILE_DATETIME_FORMAT': "Y-m-d H.i.s", }
    # Union of new_formats with the existing ones
    formats.FORMAT_SETTINGS = frozenset(formats.FORMAT_SETTINGS | new_formats.keys())
    for setting, value in new_formats.items():
        globals()[setting] = value
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多