如何在Python中提取最近三个月的名字?如果我今天运行此程序,那么我希望将五月,六月和七月作为结果。
答案 0 :(得分:1)
calendar
模块,并列出给定的提取日期时间月份的月份名称切片。
.month_name
返回所有月份名称的列表。calendar
是标准库的一部分。timedelta
,没有month
参数,因为一个月的长度不是恒定值,因此请使用days
作为近似值。datetime
。
datetime
是python标准库的一部分,因此不需要单独安装。.month
从日期时间中提取月份。from datetime import datetime, timedelta
import calendar
# get the time now
now = datetime.now()
# iterate through 3 different timedeltas as an example
for x in range(1, 4):
new = now - timedelta(days=31*x)
print(calendar.month_name[new.month])
[out]:
July
June
May
.strftime
一起使用'%B'
和calendar
dateutil
模块不同,timedelta
仍然没有month
参数。
dateutil
模块提供了对标准datetime
模块的强大扩展,必须先安装然后导入。# get the time now
now = datetime.now()
# iterate through 3 different timedeltas as an example
for x in range(1, 4):
new = now - timedelta(days=31*x)
print(new.strftime('%B'))
[out]:
July
June
May
答案 1 :(得分:1)
更简单的方法是使用带有日期时间和时间增量的“%B”
from dateutil.relativedelta import relativedelta
from datetime import datetime
today = datetime.now()
for i in range(1,4):
print((today - relativedelta(months=i)).strftime('%B'))
输出:
July
June
May
答案 2 :(得分:1)
最好的方法是将date
和calendar
模块组合在一起。
date.today().month
将为您提供当月(1-12)的数值calendar.month_name[x]
将为您提供由数字x
表示的月份的名称%
运算符将用于包装month_name
对象的索引,以避免讨厌的0
索引返回''
将它们放在一起,我们有:
from datetime import date
from calendar import month_name
def previous_n_months(n):
current_month_idx = date.today().month - 1 # Value is now (0-11)
for i in range(1, n+1):
# The mod operator will wrap the negative index back to the positive one
previous_month_idx = (current_month_idx - i) % 12 #(0-11 scale)
m = int(previous_month_idx + 1)
print(month_name[m])
用法示例:
>>> previous_n_months(3)
July
June
May