django / python - 正则表达式

时间:2014-11-15 05:19:08

标签: python regex django date django-templates

我正在尝试编写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?

1 个答案:

答案 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] )被称为切片。