うるう年の2月29日を表すDateTime・DateTimeOffsetに対してAddYearsメソッドで年単位の加減算を行う場合は注意が必要です。 うるう年の2月29日から年単位の加減算をした結果、その年もうるう年となる場合は2月29日、そうでない場合は2月28日が返されます(3月1日にはなりません)。

DateTime/DateTimeOffset.AddYearsで2月29日のn年前・n年後の日付を求める場合の動作
using System;

class Sample {
  static void Main()
  {
    var baseDate = new DateTime(2012, 2, 29);

    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, 2, 29);

    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));
  }
}
実行結果
2012/02/29 0:00:00 + 1 years = 2013/02/28 0:00:00
2012/02/29 0:00:00 - 1 years = 2011/02/28 0:00:00
2012/02/29 0:00:00 + 4 years = 2016/02/29 0:00:00
2012/02/29 0:00:00 - 4 years = 2008/02/29 0:00:00

2016/02/29 0:00:00 + 1 years = 2017/02/28 0:00:00
2016/02/29 0:00:00 - 1 years = 2015/02/28 0:00:00
2016/02/29 0:00:00 + 4 years = 2020/02/29 0:00:00
2016/02/29 0:00:00 - 4 years = 2012/02/29 0:00:00

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。