この振る舞いにより、私は先週かなりの時間を無駄にしました。なぜこれがこのように設計されたのかについて誰かが説明していますか???|
(私はPSTにいるので、DSTオフセットは現在+7です)
var utc = new DateTime(2012, 6, 5, 9, 0, 0, DateTimeKind.Utc);
var lcl = new DateTime(2012, 6, 5, 8, 0, 0, DateTimeKind.Local); // this is 15:00 Utc
Assert.IsTrue(lcl.ToUniversalTime() > utc); // THIS SUCCEEDS (as it should)
Assert.IsTrue(lcl > utc); // THIS FAILS (with the same times!!!)
私の実際のコードでは、親切にDateTimeKind.Localに設定された変数は、元々 DateTimeKind.Utc(別のマシン上)で設定されていましたが、比較が行われているマシンへのネットワーク転送後に評価されていたため、これは二重に混乱しました。 、および転送中にその種類が変更されました(net.tcpリモーティングを使用)。