为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕少森 2021-04-07 21:18:14
我有两个约会:2005/04/10和2018/02/11。以下代码以年,月和日为单位计算差异: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)print(difference.years)print(difference.months)print(difference.days)输出为:1210112年10个月零1天。问题是我对几个月不感兴趣,只希望在几天和几天之内就可以拥有它。在我的示例中,应该是12年零306天。我知道一个很好的近似值是10个月* 30 = 300天,但结果是301,而不是306。我想精确计算出考虑leap日和每个月的天数差异的天数。Python中是否有内置方法可以做到这一点?看起来我已经在StackOverflow上进行了研究,以找到答案,但是与我的问题相关的所有问题都无法解决我的问题。
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我认为它可以满足我的要求:


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)


remaining_days = 0

if  start_date != datetime(start_date.year, 1, 1):

    end_first_year = datetime(start_date.year, 12, 31)

    remaining_days += (end_first_year - start_date).days

if  end_date != datetime(start_date.year, 1, 1):

    begin_last_year = datetime(end_date.year, 1, 1)

    remaining_days += (end_date - begin_last_year).days

print(difference.years)

print(remaining_days)

剩下的确切时间为306天。谁能建议一个不太冗长的代码段?


查看完整回答
反对 回复 2021-04-20
  • 2 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号