为什么以下代码(使用C#)会返回false:
DateTime d = DateTime.Now;
d.Ticks == d.ToUniversalTime().Ticks; // false
我希望一个DateTime的刻度基于UTC时间。
微软官方文档DateTime.Ticks中提到:
该属性的值表示自公元1年1月1日午夜12:00:00以来经过的100纳秒间隔数,即DateTime.MinValue。其中不包括由于闰秒引起的滴答声。
在哪个时区的0001年1月1日午夜?为什么DateTime.Ticks会取决于时区?我猜这些差异是下面代码返回false的原因。
DateTime d = DateTime.Now;
d == d.ToUniversalTime(); // false
在 DateTime.Equals 的 MSDN 文档中提到:
如果 t1 和 t2 的 Ticks 属性值相等,则它们是相等的。它们的 Kind 属性值不考虑在相等测试中。
我的期望是,无论时区如何,DateTime.Ticks 都应该是相等的。
我期望两个时刻无论发生在哪个时区,都应该是相等的。但我的期望是错误的吗?