タイムゾーン・時刻の種類に関するオプションのうち、AdjustToUniversalおよびRoudtripKindは解析した日時の補正に関するオプションです。

AdjustToUniversalが指定された場合は、解析した日時をUTCに補正します。 このため、DateTime.Kindは常にDateTimeKind.Utc、DateTimeOffset.Offsetは00:00:00となります。 文字列中の日時がどのタイムゾーンも表さない場合、時刻の補正は行われず、DateTime.KindにはDateTimeKind.Unspecifiedが設定されます。

一方RoudtripKindが指定された場合は、解析した日時の種類とタイムゾーン情報を維持します。 時刻にZGMTなどのUTCであることを表す文字列が含まれていれば、DateTimeKind.Utcとして扱われます。 このオプションはDateTimeOffsetでは無視されます。

DateTime/DateTimeOffset.ParseExactメソッドでDateTimeStylesを指定し、変換した時刻のオフセットを補正または維持する
Imports System
Imports System.Globalization

Class Sample
  Shared Sub Main()
    Dim inputs() As String = New String() { _
      "2013-04-01T15:00:30.1234567", _
      "2013-04-01T15:00:30.1234567Z", _
      "2013-04-01T15:00:30.1234567+00:00", _
      "2013-04-01T15:00:30.1234567+09:00", _
      "2013-04-01T15:00:30.1234567-05:00" _
    }
    Dim styles() As DateTimeStyles = New DateTimeStyles() { _
      DateTimeStyles.None, _
      DateTimeStyles.AdjustToUniversal, _
      DateTimeStyles.RoundtripKind _
    }

    ' 文字列をDateTimeへ変換
    Console.WriteLine("DateTime.ParseExact")
    For Each style As DateTimeStyles In styles
      For Each input As String In inputs
        Dim dt As DateTime = DateTime.ParseExact(input, "o", Nothing, style)

        Console.WriteLine("{0,-35} ({1,-18}) -> {2} ({3})", input, style, dt, dt.Kind)
      Next
      Console.WriteLine()
    Next
    Console.WriteLine()

    ' 文字列をDateTimeOffsetへ変換
    Console.WriteLine("DateTimeOffset.ParseExact")
    For Each style As DateTimeStyles In styles
      For Each input As String In inputs
        Try
          Dim dto As DateTimeOffset = DateTimeOffset.ParseExact(input, "o", Nothing, style)

          Console.WriteLine("{0,-35} ({1,-18}) -> {2}", input, style, dto)
        Catch ex As FormatException
          Console.WriteLine("{0,-35} ({1,-18}) -> (FormatException)", input, style)
        End Try
      Next
      Console.WriteLine()
    Next
    Console.WriteLine()
  End Sub
End Class
UTC+9の環境での実行結果例
DateTime.ParseExact
2013-04-01T15:00:30.1234567         (None              ) -> 2013/04/01 15:00:30 (Unspecified)
2013-04-01T15:00:30.1234567Z        (None              ) -> 2013/04/02 0:00:30 (Local)
2013-04-01T15:00:30.1234567+00:00   (None              ) -> 2013/04/02 0:00:30 (Local)
2013-04-01T15:00:30.1234567+09:00   (None              ) -> 2013/04/01 15:00:30 (Local)
2013-04-01T15:00:30.1234567-05:00   (None              ) -> 2013/04/02 5:00:30 (Local)

2013-04-01T15:00:30.1234567         (AdjustToUniversal ) -> 2013/04/01 15:00:30 (Unspecified)
2013-04-01T15:00:30.1234567Z        (AdjustToUniversal ) -> 2013/04/01 15:00:30 (Utc)
2013-04-01T15:00:30.1234567+00:00   (AdjustToUniversal ) -> 2013/04/01 15:00:30 (Utc)
2013-04-01T15:00:30.1234567+09:00   (AdjustToUniversal ) -> 2013/04/01 6:00:30 (Utc)
2013-04-01T15:00:30.1234567-05:00   (AdjustToUniversal ) -> 2013/04/01 20:00:30 (Utc)

2013-04-01T15:00:30.1234567         (RoundtripKind     ) -> 2013/04/01 15:00:30 (Unspecified)
2013-04-01T15:00:30.1234567Z        (RoundtripKind     ) -> 2013/04/01 15:00:30 (Utc)
2013-04-01T15:00:30.1234567+00:00   (RoundtripKind     ) -> 2013/04/02 0:00:30 (Local)
2013-04-01T15:00:30.1234567+09:00   (RoundtripKind     ) -> 2013/04/01 15:00:30 (Local)
2013-04-01T15:00:30.1234567-05:00   (RoundtripKind     ) -> 2013/04/02 5:00:30 (Local)


DateTimeOffset.ParseExact
2013-04-01T15:00:30.1234567         (None              ) -> 2013/04/01 15:00:30 +09:00
2013-04-01T15:00:30.1234567Z        (None              ) -> 2013/04/01 15:00:30 +00:00
2013-04-01T15:00:30.1234567+00:00   (None              ) -> 2013/04/01 15:00:30 +00:00
2013-04-01T15:00:30.1234567+09:00   (None              ) -> 2013/04/01 15:00:30 +09:00
2013-04-01T15:00:30.1234567-05:00   (None              ) -> 2013/04/01 15:00:30 -05:00

2013-04-01T15:00:30.1234567         (AdjustToUniversal ) -> 2013/04/01 6:00:30 +00:00
2013-04-01T15:00:30.1234567Z        (AdjustToUniversal ) -> 2013/04/01 15:00:30 +00:00
2013-04-01T15:00:30.1234567+00:00   (AdjustToUniversal ) -> 2013/04/01 15:00:30 +00:00
2013-04-01T15:00:30.1234567+09:00   (AdjustToUniversal ) -> 2013/04/01 6:00:30 +00:00
2013-04-01T15:00:30.1234567-05:00   (AdjustToUniversal ) -> 2013/04/01 20:00:30 +00:00

2013-04-01T15:00:30.1234567         (RoundtripKind     ) -> 2013/04/01 15:00:30 +09:00
2013-04-01T15:00:30.1234567Z        (RoundtripKind     ) -> 2013/04/01 15:00:30 +00:00
2013-04-01T15:00:30.1234567+00:00   (RoundtripKind     ) -> 2013/04/01 15:00:30 +00:00
2013-04-01T15:00:30.1234567+09:00   (RoundtripKind     ) -> 2013/04/01 15:00:30 +09:00
2013-04-01T15:00:30.1234567-05:00   (RoundtripKind     ) -> 2013/04/01 15:00:30 -05:00