Skip to main content
 首页 » 编程设计

python之django/python之正则表达式

2025年05月04日2352php

我正在尝试写一个 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]) 被称为切片。