簡體   English   中英

如何在Python中減去兩個日期?

[英]How can I subtract two dates in Python?

因此,基本上我想做的就是從今天的日期中減去出生日期,以得出某人的年齡,我已經成功地做到了,但是我只能得到它來顯示某人的年齡。

dateofbirth = 19981128
dateofbirth = list(str(dateofbirth))
now = datetime.date.today()
yr = dateofbirth[:4]
yr = ''.join(map(str, yr))
month = dateofbirth[4:6]
month = ''.join(map(str, month))
day = dateofbirth[6:8]
day = ''.join(map(str, day))
birth = datetime.date(int(yr), int(month), int(day))
age = now - birth
print(age)

在這種情況下,年齡以天為單位,有什么辦法可以將其設為xx年xx個月和xx天?

您可以使用strptime

>>> import datetime
>>> datetime.datetime.strptime('19981128', '%Y%m%d')
datetime.datetime(1998, 11, 28, 0, 0)
>>> datetime.datetime.now() - datetime.datetime.strptime('19981128', '%Y%m%d')
datetime.timedelta(5823, 81486, 986088)
>>> print (datetime.datetime.now() - datetime.datetime.strptime('19981128', '%Y%m%d'))
5823 days, 22:38:18.039365

在Python中減去兩個日期的結果是一個timedelta對象,它僅表示一個持續時間。 它不會在啟動時“記住”,因此無法告訴您已經過去了多少個月。

考慮從1月1日到3月1日的時間是“兩個月”,從3月1日到4月28日的時間是“ 1個月28天”,但是在非-年中,它們的時間都是相同的,59天。 實際上,這是節省日光的方法,但不要讓它變得比指出要點更復雜;-)

可能有一個第三方庫可以為您提供幫助,但是就標准Python庫而言,AFAIK您必須袖手旁觀,並通過查找不同日期/月份/年份組件的差異來自己做。依次兩個日期。 當然,月份和日期的差異可能是負數,因此您必須處理這些情況。 回憶一下在學校如何教您進行減法運算,並且在將數字從“月份”列攜帶到“天”列時要非常小心,以使用相關月份的正確天數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM