ToUniversalTime 関数がここで効果がないのはなぜですか。
DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Local);
dt = dt.ToUniversalTime(); // convert BST to UTC ?
dt.ToString();
"24/03/2009 01:00:00" ...違いますか?
と同じですか..
DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Utc);
dt = dt.ToUniversalTime(); // nothing to do, already utc
dt.ToString();
「2009/03/24 01:00:00」 ... 正解です。
最初の例の ToString() 値が調整されることを期待していました。Local として指定された DateTime によって、ToUniversalTime() の呼び出し時に対応する TimeZone が計算され、英国の時刻は " 2009/03/24 00:00:00" (UTC)
ただし、このように DateTimeKind を指定すると、ToUniversalTime または ToLocalTime が計算できなくなるようです。