当前位置: 首页 > 后端技术 > Python

力扣-1360,两个日期之间的天数[Python]

时间:2023-03-26 12:03:39 Python

LeetCode1360。NumberofDaysBetweenTwoDates[Easy][Python][Mathematics]问题LeetCode写一个程序来计算两个日期之间的天数。这两个日期以字符串形式给出,它们的格式为YYYY-MM-DD,如示例所示。示例1:输入:date1="2019-06-29",date2="2019-06-30"输出:1示例2:输入:date1="2020-01-15",date2="2019-12-31"输出:15Constraints:给定的日期是1971年到2100年之间的有效日期。请编写一个程序来计算两个日期之间的天数。日期以YYYY-MM-DD格式的字符串形式给出,如示例中所示。示例1:输入:date1="2019-06-29",date2="2019-06-30"输出:1示例2:输入:date1="2020-01-15",date2="2019-12-31“输出:15提示:给定的日期是1971到2100之间的有效日期。数学解决方案一:调用日期时间库。方案二:手动计算日期中的天数。Python3代码解析方法一:classSolution:defdaysBetweenDates(self,date1:str,date2:str)->int:#solutionone:datetimeimportdatetimeyear1,month1,day1=date1[0:4],date1[5:7],date1[8:10]year2,month2,day2=date2[0:4],date2[5:7],date2[8:10]d1=datetime.datetime(int(year1),int(month1),int(day1))#date1d2=datetime.datetime(int(year2),int(month2),int(day2))#date2returnabs((d1-d2).days)解法二:classSolution:defdaysBetweenDates(self,date1:str,date2:str)->int:#方案二:手动计算y1,m1,d1=map(int,date1.split('-'))y2,m2,d2=map(int,date2.split('-'))months=[0,31,28,31,30,31,30,31,31,30,31,30,31]#获取1971年的天数defgetDays(y,m,d):ans=0#计算i的年份inrange(1971,y):if(i%4==0andi%100!=0)ori%400==0:#闰年ans+=366else:ans+=365#计算iinrange(1,m)的月份:ifi==2:#二月ans+=29if(y%4==0andy%100!=0)ory%400==0else28else:ans+=months[i]returnans+d#计算天数days1=getDays(y1,m1,d1)days2=getDays(y2,m2,d2)returnabs(days1-days2)代码地址GitHub链接