我正在尝试写一个 django custom template tag and filter根据用户的语言代码显示日期。大量搜索 SO 和 Google,但找不到示例或引用。
我在使用正则表达式(至少我认为我必须在此处编写代码)时遇到困难,无法将传递的日期格式从 mm/yyyy 更改为 yyyy.mm。
这是我的模板标签代码:
{{ variable_name|date:'m/Y'|format_date_display:variable.language_version.language_code }}
以上代码会将日期作为 mm/yyyy(作为值)以及两个字符的语言代码(作为 arg)传递,即:en、fr、bg、ar、de 等。
这是我的 customised_template_tags.py 代码:
@register.filter(name='format_date_display')
def format_date_display(value, arg):
.......
# yyyy-mm (dash separator and year first).
elif arg in ('eu', 'en-CA', 'fr-CA', 'lt', 'sv', 'zh-CN', 'zh-TW'):
# TODO: change the date format from mm/yyyy to yyyy-mmm.
return value.replace("/", '-')
......
如何将新日期显示的正则表达式写为 yyyy-mm?
请您参考如下方法:
计算日期格式的值是 mm/yyyy (12/1999),试试这个:
@register.filter(name='format_date_display')
def format_date_display(value, arg):
.......
# yyyy-mm (dash separator and year first).
elif arg in ('eu', 'en-CA', 'fr-CA', 'lt', 'sv', 'zh-CN', 'zh-TW'):
# the line below will change the date format from mm/yyyy to yyyy-mmm.
value = value[3:] + value[2:3] + value[0:2]
return value.replace("/", '-')
......
在 Python 语言中,上述语法 (value = value[3:] + value[2:3] + value[0:2]) 被称为切片。
