Python中年和日(无月)中的日期差异

我有两个约会:2005/04/10和2018/02/11。


以下代码以年,月和日为单位计算差异:


from datetime import datetime

from dateutil.relativedelta import relativedelta

start_date = datetime(2005,4,10)

end_date = datetime(2018,2,11)

difference = relativedelta(end_date, start_date)

print(difference.years)

print(difference.months)

print(difference.days)

输出为:


12

10

1

12年10个月零1天。问题是我对几个月不感兴趣,只希望在几天和几天之内就可以拥有它。在我的示例中,应该是12年零306天。我知道一个很好的近似值是10个月* 30 = 300天,但结果是301,而不是306。我想精确计算出考虑leap日和每个月的天数差异的天数。Python中是否有内置方法可以做到这一点?


看起来我已经在StackOverflow上进行了研究,以找到答案,但是与我的问题相关的所有问题都无法解决我的问题。


慕少森
浏览 232回答 2
2回答

幕布斯6054654

我认为它可以满足我的要求:from datetime import datetimefrom dateutil.relativedelta import relativedeltastart_date = datetime(2005,4,10)end_date = datetime(2018,2,11)      difference = relativedelta(end_date, start_date)remaining_days = 0if  start_date != datetime(start_date.year, 1, 1):    end_first_year = datetime(start_date.year, 12, 31)    remaining_days += (end_first_year - start_date).daysif  end_date != datetime(start_date.year, 1, 1):    begin_last_year = datetime(end_date.year, 1, 1)    remaining_days += (end_date - begin_last_year).daysprint(difference.years)print(remaining_days)剩下的确切时间为306天。谁能建议一个不太冗长的代码段?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python