千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > python输入数字变成月份

python输入数字变成月份

来源:千锋教育
发布人:xqq
时间: 2023-11-11 22:48:44 1699714124

python输入数字变成月份

1、思路说明

可计算给定区间的时间差,即两者之间共包含几个月。然后由第一个月(开始时间)逐渐累积,最后得到给定时间区间所有月份的清单。

2、时间差计算:我们可以使用第三方库dateutil中的rrule.count函数来实现。

Importdatetimefromdateutilimportrrule

start=datetime.datetime.strptime('2019.01','%Y.%m')

end=datetime.datetime.strptime('2019.05','%Y.%m')print(start.month)

rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).count()

3、每月累积计算:在这里,我们可以使用for循环和range()函数,根据总月数,逐步累积,例如:2019.01-2019.05共5个月,从0到4迭代,从1+0=1到1+4=5,就可以得到所有月份;此外,当月迭代累积结果超过12时,将累积结果除以12取余,并将年份加1,就可以得到正确的年月时间。

importdatetimefromdateutilimportrruledefget_each_month(start_month,end_month):ifstr(start_month).count('.')!=1orstr(end_month).count('.')!=1:print("ParameterError:Plsinputastringsuchas'2019.01'")return[]ifint(str(start_month).split('.')[1])>12orint(str(end_month).split('.')[1])>12:print('ParameterError:Plsinputcorrectmonthrangesuchasbetween1to12')return[]ifint(str(start_month).split('.')[1])==0orint(str(end_month).split('.')[1])==12:print('ParameterError:Plsinputcorrectmonthrangesuchasbetween1to12')return[]

start=datetime.datetime.strptime(start_month,"%Y.%m")

end=datetime.datetime.strptime(end_month,"%Y.%m")

month_count=rrule.rrule(rrule.MONTHLY,dtstart=start,until=end).count()#计算总月份数

ifend

list_month=[]

year=int(str(start)[:7].split('-')[0])#截取起始年份

forminrange(month_count):#利用range函数填充结果列表

month=int(str(start)[:7].split('-')[1])#截取起始月份,写在for循环里,作为每次迭代的累加基数

month=month+mifmonth>12:ifmonth%12>0:

month=month%12#计算结果大于12,取余数

ifmonth==1:

year+=1#只需在1月份的时候对年份加1,注意year的初始化在for循环外

else:

month=12

iflen(str(month))==1:

list_month.append(str(year)+'.0'+str(month))else:

list_month.append(str(year)+'.'+str(month))returnlist_month

以上就是python输入数字变成月份的方法,基本的流程分享给大家,看懂后可以进行实例部分的尝试。更多Python学习教程请关注IT培训机构:千锋教育。

tags: python培训
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT