Python:计算两个日期之间的天数
来源:互联网 发布:微信淘宝客带图转换 编辑:程序博客网 时间:2024/06/08 13:01
Python:计算两个日期之间的天数
这次用python编写了计算两个日期之间的天数的代码,编写的思路是在编写中逐步产生的,过程比较流畅。有几点分析的细节需要点出来:
分析
- 1. 是否为闰年,2月的天数
- 能被4整除但不能被100整除,或能被400整除的年份即为闰年
- 2. 两个日期是同一个月怎么处理
- 后者减去前者即可
- 3. 两个日期同年,且所在月份相邻怎么处理
- 4. 两个日期同年,但所在月份不相邻怎么处理
- 上面这两个问题的提出是为了引出一种计算思路,即可以将第一个日期所在月份剩余的天数和第二个日期所在月份已经过的天数先加起来,有点“掐头去尾”的意思,于是,如果两个月份相邻,则已经得到结果;若两个月份不相邻,则将中间月份的天数依次加起来即可
- 5. 两个日期所在年份相邻怎么处理
- 6. 两个日期所在年份不相邻怎么处理
- 这两个问题与上面处理3,4问题的思路一样——先“掐头去尾”,计算第一个日期所在年份剩余的天数和第二个日期所在年份已经经过的天数,在看是否需要计算中间年份的天数
代码块
#判断是否为闰年def isLeapYear(year): if (year%4 ==0 and year%100 !=0 ) or (year%400 == 0): return True else: return Falsedef daysBetweenDates(year1, month1, day1, year2, month2, day2): #根据year1是否为闰年,选择year1当年每月的天数列表 if isLeapYear(year1): daysOfMonths1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] else: daysOfMonths1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] year_temp = year2 - year1 month_temp = month2 - month1 if year_temp == 0: #同年 if month_temp == 0: #同年且同月 days = day2 -day1 else: #同年但不同月 days = daysOfMonths1[month1-1]-day1+day2 #“掐头去尾” i = 1 #计算中间月份,若月份相邻则month_temp==1,该循环不会被执行 while i< month_temp: days += daysOfMonths1[month1+i-1] i += 1 else: #不同年 #根据是否为闰年,得到year2每月天数列表 if isLeapYear(year2): daysOfMonths2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] else: daysOfMonths2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #第一个日期所在年份剩余天数,首先计算第一个月份剩余天数 days = daysOfMonths1[month1-1]-day1 i = 1 while (month1+i<=12): #若该月不是12月,即 有剩余月份,则执行该循环,累加本年所剩余天数 days += daysOfMonths1[month1+i-1] i += 1 #计算第二个日期所在年份已经经过的天数 days += day2#先计算当月已经经过的天数 if month2 > 1:#若不是1月,则计算已经经过的月份的天数 j = 1 while j < month2: days += daysOfMonths2[j-1] j += 1 #计算中间年份的天数,此时temp_year > 1(即不相邻年份, #因为以上的“掐头去尾”已经可以得出年份相邻这种情况的结果了) k = 1 while k < year_temp: if isLeapYear(year1 + k): days += 366 else: days += 365 k += 1 return(days)
测试与遇到的一点问题
2012,1,1~~2012,2,28 有58天
2011,6,30 ~~2017,6,30 有2192天
可以从Excel上得出两个日期之间的天数,来进行更多的测试。
但是不知从哪里开始,有一天的误差:
1900,1,1~~1999,12,31 代码计算出有36523天,而Excel上有36524天。
有了解的小伙伴,还望不吝赐教哈~~~
阅读全文
0 0
- Python:计算两个日期之间的天数
- 计算天数------java两个日期之间的天数、分钟计算
- Sql计算两个日期之间的天数
- 计算两个日期之间的工作天数
- JS计算两个日期之间的天数
- JAVA计算两个日期之间的天数
- excel计算两个日期之间的天数
- JS计算两个日期之间的天数
- 计算两个日期之间的天数
- 计算两个日期之间的天数
- 计算两个日期之间的天数。
- javascript计算两个日期之间的天数
- JS计算两个日期之间的天数
- 计算两个日期之间相差的天数
- 计算两个日期之间的间隔天数
- 计算两个日期之间的工作日天数
- 计算两个日期之间的天数
- JS计算两个日期之间的天数
- CRT 库功能
- 【scala 笔记(1)】 基础
- codeforces——873B —— Balanced Substring
- QuarkXPress 2017(平面设计软件)官方中文破解版V16.0.0.400下载 | quarkxpress中文版下载
- 开关电源(DC-DC)与LDO电源的区别---原理
- Python:计算两个日期之间的天数
- java List<>详解
- [SQL]SQL Server获取数据库服务器当前时间
- scrapy helloworld入门
- Loadrunner怎么测试ERP?
- 命令行数据库导出sql,"mysqldump"不是内部或外部命令
- angular解析展示
- 是伐啦按键士大夫乐山大佛了撒娇发;收到了发
- html angular 加载json内容service