Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将新的日期时间格式添加到django格式列表中_Python_Django_Datetime_Timezone - Fatal编程技术网

Python 将新的日期时间格式添加到django格式列表中

Python 将新的日期时间格式添加到django格式列表中,python,django,datetime,timezone,Python,Django,Datetime,Timezone,我在settings.py中使用Django格式来跟踪所有日期时间格式,以便它们保持一致。我的设置文件中有多种格式,例如: 设置.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_DAT

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

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

关于上述内容: *注1:如果放置在settings.py中,则不起作用

与此密切相关,但这个问题只是定义了一个定制格式,这不是我想要的。我想使用django的格式系统,这样就有了一个真相的来源


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

在思考这个问题时,我想到了这个“黑客”,希望有更好的(官方或推荐的)方法:

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
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