如何解决Python:有没有一种方法可以获取最近三个月的名称?
如何在Python中提取最近三个月的名字?如果我今天运行此程序,那么我希望将五月,六月和七月作为结果。
解决方法
- 一种方法是使用python
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
- 如answer的bigbounty中所述,与
.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
,
更简单的方法是使用带有日期时间和时间增量的“%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
,
最好的方法是将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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。