一方、2月28日または3月1日を表すDateTime・DateTimeOffsetに対してAddYearsメソッドを用いる場合は、その年がうるう年となるか否かに関わらず、結果は2月28日または3月1日となります。
DateTime/DateTimeOffset.AddYearsで2月28日・3月1日のn年前・n年後の日付を求める場合の動作
Imports System
Class Sample
Shared Sub Main()
Dim baseDate As New DateTime(2012, 2, 28)
Console.WriteLine("{0} + 1 years = {1}", baseDate, baseDate.AddYears(+1))
Console.WriteLine("{0} - 1 years = {1}", baseDate, baseDate.AddYears(-1))
Console.WriteLine("{0} + 4 years = {1}", baseDate, baseDate.AddYears(+4))
Console.WriteLine("{0} - 4 years = {1}", baseDate, baseDate.AddYears(-4))
Console.WriteLine()
baseDate = New DateTime(2016, 3, 1)
Console.WriteLine("{0} + 1 years = {1}", baseDate, baseDate.AddYears(+1))
Console.WriteLine("{0} - 1 years = {1}", baseDate, baseDate.AddYears(-1))
Console.WriteLine("{0} + 4 years = {1}", baseDate, baseDate.AddYears(+4))
Console.WriteLine("{0} - 4 years = {1}", baseDate, baseDate.AddYears(-4))
End Sub
End Module
実行結果
2012/02/28 0:00:00 + 1 years = 2013/02/28 0:00:00 2012/02/28 0:00:00 - 1 years = 2011/02/28 0:00:00 2012/02/28 0:00:00 + 4 years = 2016/02/28 0:00:00 2012/02/28 0:00:00 - 4 years = 2008/02/28 0:00:00 2016/03/01 0:00:00 + 1 years = 2017/03/01 0:00:00 2016/03/01 0:00:00 - 1 years = 2015/03/01 0:00:00 2016/03/01 0:00:00 + 4 years = 2020/03/01 0:00:00 2016/03/01 0:00:00 - 4 years = 2012/03/01 0:00:00
うるう年かどうかの判別については§.うるう年を参照してください。