DateTimeOffset.Parseメソッドで文字列から日時を読み取りDateTimeOffsetを作成する場合、文字列中にオフセット値が指定されていれば、その値がOffsetプロパティの値となります。
DateTimeOffset.Parseメソッドでオフセット表記のある/ない文字列からDateTimeOffsetに変換する
using System;
class Sample {
static void Main()
{
var a = "2013-04-01T15:00:30"; // オフセット表記の無い日時
var b = "2013-04-01T15:00:30-05:00"; // オフセット表記のある日時
var c = "2013-04-01T15:00:30Z"; // UTCでの日時
foreach (var s in new string[] {a, b, c}) {
// 文字列からDateTimeOffsetに変換
DateTimeOffset dto = DateTimeOffset.Parse(s);
Console.WriteLine("{0}, {1}", dto.DateTime, dto.Offset);
}
Console.WriteLine();
}
}
実行結果
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)で解説します。