またDateTime・DateTimeOffsetのコンストラクタでは月であれば1〜12、時間であれば0〜23の範囲内の値を指定しなければArgumentOutOfRangeExceptionがスローされますが、Add*メソッドではその範囲外の値も指定出来るため、45日後、26時間後、といった日時を求めることも出来ます。 これを利用して、例えば「1999年12月31日 27時30分」という時刻を「2000年01月01日 03時30分」に正規化するといったこともできます。 当然、Add*メソッドではうるう年での日数の違いも考慮された上で日時が計算されます。

DateTime.Addメソッドを使って日時を正規化する
Imports System

Class Sample
  Shared Sub Main()
    Dim now As DateTime = DateTime.Now ' 現在日時を取得

    Console.WriteLine("now: {0}", now)
    Console.WriteLine("3 days before: {0}", now.AddDays(-3.0).Date) ' 3日前の日付を求める
    Console.WriteLine()

    ' 日時「2012年2月28日 32時の5分前」を正規化する
    Dim dt As New DateTime(2012, 2, 28)

    dt = dt.AddHours(32.0) ' 32時
    dt = dt.AddMinutes(-5.0) ' 5分前

    Console.WriteLine(dt)
  End Sub
End Class
実行結果例
now: 2013/04/01 15:00:30
3 days before: 2013/03/29 0:00:00

2012/02/29 7:55:00

当然ながらこれらのメソッドで日時の加減算を行なっても、その結果として得られるDateTimeのKindおよびDateTimeOffsetのOffsetは加減算を行う前のものと同じものとなります(日時の加減算はDateTime.KindおよびDateTimeOffset.Offsetには影響しません)。