繁体   English   中英

将月份编号转换为月份名称

[英]Converting month number to month name

下面的代码正确获取月份编号,但我想检索月份名称而不是编号。 我试过在模板中使用 Django 日期过滤器,以及 views.py 中的日历实用程序,但这似乎不起作用

视图.py

def ticket(request, month, year):
    airline = Airline.objects.get(id=request.user.airline_id)
    for ts in Timestamp.objects.filter(
            airline=airline,
            usage_on__year=year,
            usage_on__month=month
    ):
        pass

    return TemplateResponse(request, 'club/al_history.html', {
        'usage_month': month,
        'usage_year': year,
        'timestamp': timestamp,
    })

al.html

{% extends 'base.html' %}

{% block content %}
<h3>{{ usage_month }}, {{usage_year}}</h3>
{% endblock %}

您可以使用calendar.month_name 根据其文档 ,它是:

代表当前语言环境中一年中月份的数组。

因此,您可以像这样简单地使用它:

calendar.month_name[month]

使用en_US语言环境的完整示例:

>>> import calendar
>>> month = 1
>>> calendar.month_name[month]
'January'

您可以使用日历模块:

calendar.month_name[3]

返回March

有关更多信息,请查看此问题

使用键=月号和值=月名创建字典,例如:

dict = {"01": "January", "02": "February", etc...}

那么您可以像下面这样使用此字典:

print(dict[month])

我使用views.py中的date utils解决了它,如下所示:

'usage_date': date(int(year), int(month), 1) 

然后在模板中,使用Django快捷方式呈现月份名称。

如果我希望根据所选语言更改月份名称,则此方法效果很好。

这里的答案:

import datetime

monthinteger = 12

month = datetime.date(1900, monthinteger, 1).strftime('%B')

print(month)

会给“十二月”。 此外,将“%B”替换为“%b”将给出缩写形式,例如“Dec”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM