我想写一个名为days_between的函数,它接受六个整数(year1,month1,day1,year2,month2,day2)并返回从较早日期(year1-month1-day1)到较晚日期的天数( YEAR2-MONTH2-DAY2)。如果任一日期无效,则函数应返回0.为了能够查看给定日期是否有效,我编写了一个名为is_valid_date的函数,如下所示:
def is_valid_date(year, month, day):
ndays = mdays[month] + (month == February and isleap(year))
if datetime.MINYEAR <= year <= datetime.MAXYEAR:
if 1 <= month <=12:
if 1 <= day <= 31 and 1 <= day <= ndays:
return True
else: return False
else: return False
如果date有效则返回True,如果无效则返回False。 在我的days_between函数中,我想首先检查日期是否有效,如果是,则返回它们之间的天数。如果日期无效,则返回0.此外,如果第二个日期早于第一个日期,则该函数应返回0。 这就是我所做的:
def days_between(year1, month1, day1, year2, month2, day2):
date1 = date(year1, month1, day1)
date2 = date(year2, month2, day2)
diff = date2 - date1
if is_valid_date(year1, month1, day1) and is_valid_date(year2, month2, day2):
return diff
elif date2 < date1:
return 0
else:
return 0
现在用日期测试此函数时:
print(days_between(2026, 1, 3, 2025, 6, 3))
它返回负数-214天,0:00:00,因为它假设从第二个日期出现之前返回0。此外,如果我测试无效日期:
print(days_between(2026, 1, 34, 2025, 6, 3))
当它假设返回0时会返回错误消息,因为它是无效的日期:
line 39, in days_between
date1 = date(year1, month1, day1)
ValueError: day is out of range for month
有人可以帮我验证这个功能吗?如果我的代码出现问题我无法帮助我。
答案 0 :(得分:0)
经过多次试验后,我使用了日历库才能找到结果。这是代码:
def is_valid_date(year, month, day):
try:
days = calendar.monthrange(year, month)
days1 = days[1]
if datetime.MINYEAR <= year <= datetime.MAXYEAR:
if 1<= month <= 12:
if 1<= day <= days1:
return True
else:
return False
else: return False
except ValueError:
return False
找出我所做的日期之间的区别:
def days_between(year1, month1, day1, year2, month2, day2):
try:
date1= datetime.date(year1, month1, day1)
date2= datetime.date(year2, month2, day2)
dif = date2 - date1
diff = dif.days
if diff < 0:
return 0
except ValueError:
return 0
else:
return diff
如果有人有其他方法,请与我分享。