>>207
>正確には月を比較して、同月なら日を比較して、年の差から年齢を求めるが正しい気がする。
と
>20090304 - 19870305 = 219999
はやり方が違うだけで言ってることは同じ。

下4桁の引き算がif (d1.Month > d2.Month || (d1.Month == d2.Month && d1.Day >= d2.Day)) にあたり、
その結果、単に引くだけか、-1するかの違いだからな。