获取指定语言环境的日期时间格式掩码。

3
我如何获取当前在我的Django应用程序中使用的语言环境的日期时间掩码(类似于“dd/mm/yyyy HH:mm:ss”的字符串)? (我需要它来配置一个需要日期时间掩码作为参数的JavaScript组件,由于我有一个多语言站点,无法硬编码该掩码。)
1个回答

5
使用{{link1:django.utils.formats模块}}:
from django.utils import formats
date_format = get_format('DATE_FORMAT')

get_format(format_type, lang=None, use_l10n=None) 返回当前使用的格式;将use_l10n设置为强制应用本地化(默认为您的settings.USE_L10N标志),或使用lang参数选择特定语言:

>>> from django.utils import formats
>>> formats.get_format('DATE_FORMAT')
'N j, Y'
>>> formats.get_format('DATE_FORMAT', lang='de')
'j. F Y'

请查看可用日期格式字符串以了解各种字符串的含义。

或者,使用JavaScript目录视图,其中包括JavaScript get_format()函数。

无论哪种方式,Django格式都不是JS识别的格式。您有两个选择:

  • 使用此Django片段.strfdate()方法添加到JavaScript Date原型中,以识别Django格式,或

  • 安装django-missing库,其中包括上述片段的更新版本作为准备包含的JS库。

如果您需要JS兼容的掩码,则需要根据这两个.strfdate()示例自行进行翻译。


好的,对于我的情况,我需要一个日期时间,所以使用formats.get_format('DATETIME_FORMAT')...它返回'N j, Y, P'... 我该如何将这个字符串转换为一个“正常”的日期时间掩码? - daveoncode
或者,使用 django-missing,它为 JavaScript 添加了日期格式化功能;其中包括该代码片段的更新版本。 - Martijn Pieters
如果你的JS需要自己的实际格式字符串,而不是格式化日期字符串,我猜想你将不得不编写自己的转换器,将Django格式字符串映射到你所需的任何格式。 - Peter DeGlopper
是的,彼得,这才是真正的问题... 我不需要一个日期的字符串表示,我需要一个包含类似于“dd/mm/yyy HH:mm”(根据用户使用的语言)的字面上的字符串掩码。 - daveoncode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接