考慮到我以字符串開頭,如(月/日/年),當前日期爲2011年3月13日(7天后)我可以在Python中找到自那時以來經過的年數(7/365 = 0.0191780821917808
)嗎?Python:獲取從日期字符串中獲得的年數
請注意,我希望能夠處理任何輸入日期。不是任何格式,你可以假設上面的格式。
考慮到我以字符串開頭,如(月/日/年),當前日期爲2011年3月13日(7天后)我可以在Python中找到自那時以來經過的年數(7/365 = 0.0191780821917808
)嗎?Python:獲取從日期字符串中獲得的年數
請注意,我希望能夠處理任何輸入日期。不是任何格式,你可以假設上面的格式。
您可以通過減去兩個datetime
s得到timedelta
,這爲您提供了很多很酷的方法來處理時差。
>>> import datetime
>>> before = datetime.datetime.strptime('3/6/2011','%m/%d/%Y')
>>> now = datetime.datetime.now()
>>> type(now-before)
<type 'datetime.timedelta'>
>>> (now-before).days
7
>>> float((now-before).days)/365
0.019178082191780823
編輯:哇,誰曾想過有這麼多的深入到這個簡單的問題。看看this question上票數最多的答案。處理閏年是一個「困難」的問題。 (贈送@kriegar)
>>> import datetime
>>> datestring = "3/6/2011"
>>> (datetime.date.today() - datetime.datetime.strptime(datestring, "%m/%d/%Y").date()).days/365.0
0.019178082191780823
以上所有答案都沒有考慮到閏年。看起來這個問題的討論與你的問題有關。
公平地說,他確實在他的問題中提出了「x/365」答案。 – 2011-03-14 03:27:46
+1,但我想說的是,使用365的分數年很腥 – DTing 2011-03-14 03:29:21
極好的一點。在閱讀你的鏈接之後,很明顯,這是一個比起初看起來更難的問題 - 主要是因爲我們認爲「年」是對時間的非常一致的衡量,但實際上它的變量取決於你「重新談論。 – 2011-03-14 03:38:41
我再經365分(現已前).days拿到分數的一年。 – 2011-03-14 03:15:46
不是閏年是這個解決方案的問題嗎? – DTing 2011-03-14 03:25:23
我的應用程序已經有了一些誤差,所以閏年可能並不是什麼大問題,因爲這個誤差<1%。感謝您的解決方案 – Muhd 2011-03-14 03:53:10