DateTime.Parseメソッドで文字列から日時を読み取りDateTimeを作成する場合にも、文字列に指定されているタイムゾーン部分を判別して適当なDateTimeKindが設定されます。
DateTime.Parseメソッドでオフセット表記のある/ない文字列からDateTimeに変換する
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[] {a, b, c}) {
// 文字列からDateTimeに変換
var dt = DateTime.Parse(s);
Console.WriteLine("{0} {1}", dt, dt.Kind);
}
Console.WriteLine();
}
}
実行結果
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)で解説します。