我正在尝试编写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?
答案 0 :(得分:1)
使用日期格式的值为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] )被称为切片。