如果我问了一个非常愚蠢的问题,请原谅我。
我正在尝试获取过去几个月的名称而不是数字我的 django 框架:
示例:例如,如果我有 12,我想返回 december 或 dec
现在,我有这个外部 python 脚本可以对日、周、月和年进行排序。
这里是外部脚本的代码 Name;basicfun: (only on the months)
#basicfun codes (external python scripts)
def selectDates(query):
if query == 'Previous-Months':
dataset = datetime.now().month - 1
dataset.strftime("%b")
return dataset
它将返回到我的 django View 以用作 Queryset 的过滤器
这里是 Frame 在 View 中工作的代码:
#Django view
def ph(request):
query = request.GET.get('dateRange')
fill = selectDates(query)
data = tank_system.objects.all().filter(datetime__contains=fill)
return render(request, 'FrounterWeb/extends/ph.html', {'tank': data})
我试过的解决方案
此链接: Get month name from number
1.
dataset = datetime.now().month - 1
dataset.strftime("%b")
错误:
Exception Type:AttributeError
Exception Value:'int' object has no attribute 'strftime'
请您参考如下方法:
你的错误是因为 datetime.now().month 是一个整数。 strftime 是 datetime 对象上的一个方法。
您可以通过以下方式获取当前月份:
month = datetime.now().strftime("%b")
要获取前一个月的名称,简单但有点“hacky”的方法是创建一个包含您想要的月份字符串的字典,并将月份数字作为键:
from datetime import datetime
def limit_month_number(start_month, months_ago):
"""
This function will return a value from 1-12 inclusive.
>>> limit_month_number(1,3) -> 10
>>> limit_month_number(12,14) -> 10
"""
month_number = start_month - (months_ago % 12)
if month_number < 1:
month_number = 12 + month_number
return month_number
def get_prev_month(months_ago):
months = {1: 'Jan', 2: 'Feb', 10: 'Oct', 11: 'Nov', 12: 'Dec'}
this_month = datetime.now().month
month_number = limit_month_number(this_month, months_ago)
prev_month = months[month_number]
return prev_month
print(get_prev_month(2)) # 'Nov', two months ago from now
此外,我必须指出,您可以使用 datetime 来完成此操作。查看其他帖子:python date of the previous month
