DateTime構造体は2.0からKind情報を持つようになり、UTCとローカル時間を区別できるようになりました。これによってどんなことが起きるかというと…
DateTime now = DateTime.Now;ダメじゃん。epoch秒に慣れてる人は確実にはまりますね。
DateTime utcNow = now.ToUniversalTime();
Console.WriteLine( "now {0} utcNow", now == utcNow ? "==" : "!=" );
// => now != utcNow
MSDNを読むと…あー書いてある書いてある
DateTime オブジェクトの計算および比較では、対象となる複数のオブジェクトが同じタイム ゾーンの時刻を表している場合にのみ、意味のある結果を得ることができます。裏返せば、タイムゾーンが違ったら意味がない…。
この場合どうすればいいかというと、DateTimeOffset構造体を使うそうです。ただし、こちらは2.0SP1から。
0 件のコメント:
コメントを投稿