DateTime.Parseメソッドで文字列から日時を読み取りDateTimeを作成する場合にも、文字列に指定されているタイムゾーン部分を判別して適当なDateTimeKindが設定されます。
DateTime.Parseメソッドでオフセット表記のある/ない文字列からDateTimeに変換する
Imports System
Class Sample
Shared Sub Main()
Dim a As String = "2013-04-01T15:00:30" ' オフセット表記の無い日時
Dim b As String = "2013-04-01T15:00:30-05:00" ' オフセット表記のある日時
Dim c As String = "2013-04-01T15:00:30Z" ' UTCでの日時
For Each s As String In New String() {a, b, c}
' 文字列からDateTimeに変換
Dim dt As DateTime = DateTime.Parse(s)
Console.WriteLine("{0} {1}", dt, dt.Kind)
Next
Console.WriteLine()
End Sub
End Class
実行結果
2013/04/01 15:00:30 Unspecified 2013/04/02 5:00:30 Local 2013/04/02 0:00:30 Local
Parseメソッドで文字列からDateTimeに変換する場合、デフォルトではローカル時刻(オフセット表記のある場合)またはUnspecified(オフセット表記のない場合)に変換されますが、オプションで変換の際に時刻の種類をどう扱うかを変更することができます。 詳しくは日時・文字列の変換と書式 §.変換時のオプション (DateTimeStyles)で解説します。