ToBinaryFromBinaryメソッドは、日時の値をlong型(64ビット)の値に変換します。 このメソッドでは、DateTime.TicksプロパティおよびDateTime.Kindプロパティの値を64ビットのバイナリ値として格納したフォーマットが用いられます。 そのため、日時をバイナリデータとして保存・復元したい場合にはこのメソッドを使うことが出来ます。

DateTime.ToBinary/FromBinaryメソッドで日時⇄64ビットバイナリ値の変換をする
Imports System

Class Sample
  Shared Sub Main()
    Dim dt As DateTime = DateTime.Now ' ローカル時刻
    Dim binary As Long = dt.ToBinary()

    Console.WriteLine("{0:o} -> {1:x16}", dt, binary)
    Console.WriteLine("{0:x16} -> {1:o}", binary, DateTime.FromBinary(binary))
    Console.WriteLine()

    dt = DateTime.UtcNow ' UTC
    binary = dt.ToBinary()

    Console.WriteLine("{0:o} -> {1:x16}", dt, binary)
    Console.WriteLine("{0:x16} -> {1:o}", binary, DateTime.FromBinary(binary))
  End Sub
End Class
実行結果例
2013-04-01T15:00:30.1230000+09:00 -> 88cffcb5595f57b0
88cffcb5595f57b0 -> 2013-04-01T15:00:30.1230000+09:00

2013-04-01T06:00:30.1230000Z -> 48cffcb5595f57b0
48cffcb5595f57b0 -> 2013-04-01T06:00:30.1230000Z

DateTimeOffsetにはToBinary・FromBinaryメソッドは用意されていません。 DateTimeOffsetのバイナリ表現が必要な場合は、DateTimeOffset.TicksプロパティおよびDateTimeOffset.Offsetプロパティの値をそれぞれ変換・復元します。

ローカル時刻(KindプロパティがDateTimeKind.Local)のDateTimeをToBinaryメソッドで変換し、その値を変換時とは異なるタイムゾーンの環境で復元する場合、復元する環境のタイムゾーンでのローカル時刻として復元される点に注意が必要です。 これを避けるには、あらかじめ日時をUTCに変換しておく必要があります。