这种行为导致我在过去一周浪费了大量时间。有没有人解释一下为什么会这样设计???|
(我在 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!!!)
这令人倍感困惑,因为在我的实际代码中,kind 设置为 DateTimeKind.Local 的变量最初是使用 DateTimeKind.Utc 设置的(在另一台机器上),但在网络传输到进行比较的机器后正在评估,并且在传输过程中改变了它的类型(使用 net.tcp 远程处理)。