python 2つの日付の期間を年単位で求める方法
最初は、(dateB - dateA).years などと書くことで、簡単に計算できないかと、色々調べてみましたが、timedelta には .days というプロパティはあっても、.years というプロパティはないんですよね。
結局、次のように簡単な関数を自作することで、解決。
書いてみれば、簡単な話なんだけど、、、すぐには思い至らない、自分のような人が他にもいると思うので、ご参考まで。
import datetime
dateA = datetime.datetime(2010,10,1)
dateB = datetime.datetime(2012,4,1)
def diff_years(dateX, dateY):
diff_year = dateY.year - dateX.year
newdateX = datetime.datetime(dateY.year, dateX.month, dateX.day)
diff_days = (dateY - newdateX).days
diff_year = round(diff_year + diff_days/365,2)
return diff_year
図で描くと、こんな感じの計算。
まず、dateB の 年(2012)から、dateAの年(2010)を引くことで、とりあえず、年単位での差が2 であることを求めている。
次に、dateBの年、dateAの月・日を組み合わせた日付を作る。
つまり、2012/10/1 という日付を作る。これが newdateXね。
2012/4/1 - 2012/10/1 を計算すると、-183 となる。
2 + (-183/2) ≒ 1.5 ということで、dateAからdateB まで、何年間になるかが計算できる。
どなたかのお役に立てば幸いです。