亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 256 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號