为什么以下代码(在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值将有所不同.