2

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 が計算できなくなるようです。

4

2 に答える 2

5

たまたまイギリスにいますか?現在、夏時間になっていますが、コードで指定した日付はこれが切り替わる前であるため、英国の現地時間とUTC時間は同じです。4月を月として指定すると、1時間の差が表示されます。

于 2009-04-02T12:02:19.620 に答える
0

乾杯デビッドM.私の朝食はありませんでした。実際、BSTの夏時間のしきい値を超える日付でテストを繰り返すと、動作はもちろん正しいです。

 DateTime dt = new DateTime(2009,4,24,1,0,0,DateTimeKind.Local); 
 dt = dt.ToUniversalTime(); // convert BST to UTC ? 
 dt.ToString(); // "24/04/2009 00:00:00" ... correct 

そして確認のために、ToString()メソッドはKindプロパティに基づいて出力されているように見えます。

于 2009-04-02T12:13:38.767 に答える