DateTime.Ticks,DateTime.Equals和timezones

Gui*_*Sim 10 c# datetime date

为什么以下代码(在C#中)返回false:

DateTime d = DateTime.Now;
d.Ticks == d.ToUniversalTime().Ticks; // false
Run Code Online (Sandbox Code Playgroud)

我希望DateTime的滴答基于UTC时间.DateTime.Ticks上的MSDN页面提到了

此属性的值表示自0001年1月1日午夜12:00:00起经过的100纳秒间隔的数量,表示DateTime.MinValue.它不包括可归因于闰秒的刻度数.

1月1日午夜,0001 ..在哪个时区?

为什么DateTime.Ticks会依赖于时区?

我猜Ticks不同的事实是下面的代码也返回false的原因

DateTime d = DateTime.Now;
d == d.ToUniversalTime(); // false
Run Code Online (Sandbox Code Playgroud)

DateTime.Equals上的MSDN文档提到

如果Ticks属性值相等,则t1和t2相等.在等式测试中不考虑他们的Kind属性值.

我的期望是,无论时区如何,DateTime.Ticks都是平等的.

无论发生在什么时区,我都希望两个时刻能够平等.我的期望是错的吗?

Hab*_*bib 11

来源:http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/fde7e5b0-e2b9-4d3b-8a63-c2ae75e316d8

DateTime.Ticks记录为"自0001年1月1日午夜12:00:00起经过的100纳秒间隔的数量".那是当地时间1月1日至1月1日.如果将DateTime转换为UTC,则Ticks将是自0001 UTC 1月1日午夜12:00:00起经过的100纳秒间隔的数量.可能与当地时间1月1日当地时间不同,两个Ticks值将有所不同.