DateTime・DateTimeOffsetの日付のみ・時刻のみを比較するメソッドは用意されていませんが、Dateプロパティで日付のみ、TimeOfDayプロパティで時刻のみを取得できるため、これを使って比較することが出来ます。
なお、DateTimeの時刻の種類(Kindプロパティの値)はDateTime.Dateプロパティが返す値には影響しませんが、DateTimeOffset.DateプロパティはDateTimeOffsetに設定されているオフセット値を加算した上での日付を返す点に注意が必要です。
Dateプロパティを使って2つのDateTimeOffsetの日付のみを比較する
Imports System
Class Sample
Shared Sub Main()
' 各DateTimeOffsetの日付のみを比較する
Dim a As New DateTimeOffset(2013, 4, 5, 6, 0, 0, new TimeSpan(9, 0, 0))
Dim b As New DateTimeOffset(2013, 4, 4, 21, 0, 0, TimeSpan.Zero)
Dim c As New DateTimeOffset(2013, 4, 4, 16, 0, 0, new TimeSpan(-5, 0, 0))
Console.WriteLine("a = {0}", a)
Console.WriteLine("b = {0}", b)
Console.WriteLine("c = {0}", c)
Console.WriteLine("a.Date = {0}", a.Date)
Console.WriteLine("b.Date = {0}", b.Date)
Console.WriteLine("c.Date = {0}", c.Date)
Console.WriteLine("DateTimeOffset.Compare(a, b) : {0}", DateTimeOffset.Compare(a, b))
Console.WriteLine("DateTimeOffset.Compare(b, c) : {0}", DateTimeOffset.Compare(b, c))
Console.WriteLine("DateTimeOffset.Compare(c, a) : {0}", DateTimeOffset.Compare(c, a))
Console.WriteLine("DateTime.Compare(a.Date, b.Date) : {0}", DateTime.Compare(a.Date, b.Date))
Console.WriteLine("DateTime.Compare(b.Date, c.Date) : {0}", DateTime.Compare(b.Date, c.Date))
Console.WriteLine("DateTime.Compare(c.Date, a.Date) : {0}", DateTime.Compare(c.Date, a.Date))
End Sub
End Class
実行結果
a = 2013/04/05 6:00:00 +09:00 b = 2013/04/04 21:00:00 +00:00 c = 2013/04/04 16:00:00 -05:00 a.Date = 2013/04/05 0:00:00 b.Date = 2013/04/04 0:00:00 c.Date = 2013/04/04 0:00:00 DateTimeOffset.Compare(a, b) : 0 DateTimeOffset.Compare(b, c) : 0 DateTimeOffset.Compare(c, a) : 0 DateTime.Compare(a.Date, b.Date) : 1 DateTime.Compare(b.Date, c.Date) : 0 DateTime.Compare(c.Date, a.Date) : -1