DateTimeOffset.Parseメソッドで文字列から日時を読み取りDateTimeOffsetを作成する場合、文字列中にオフセット値が指定されていれば、その値がOffsetプロパティの値となります。
DateTimeOffset.Parseメソッドでオフセット表記のある/ない文字列からDateTimeOffsetに変換する
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}
' 文字列からDateTimeOffsetに変換
Dim dto As DateTimeOffset = DateTimeOffset.Parse(s)
Console.WriteLine("{0}, {1}", dto.DateTime, dto.Offset)
Next
Console.WriteLine()
End Sub
End Class
実行結果
2013/04/01 15:00:30, 09:00:00 2013/04/01 15:00:30, -05:00:00 2013/04/01 15:00:30, 09:00:00
Parseメソッドで文字列からDateTimeOffsetに変換する場合、オフセット表記がない場合はデフォルトではローカル時刻であるものとして変換されますが、オプションで変換の際にオフセット値をどう扱うかを変更することができます。 詳しくは日時・文字列の変換と書式 §.変換時のオプション (DateTimeStyles)で解説します。