我有2个DateTime
values:
date1
date2
比较这 2 个日期时,这 2 个日期相等。
if (DateTime.Compare(date1, date2)!=0)
...
有人可以解释为什么吗?
对我来说有点奇怪:当将 date1 (未指定类型)转换为 UTC 时,我清楚地看到日期是不同的:
date1.ToUniversalTime() --> {15-07-13 18:45:10} 且 Kind = UTC
有人可以解释我为什么吗?
是的。这是因为DateTime是一种根本上破碎的类型 http://noda-time.blogspot.com/2011/08/what-wrong-with-datetime-anyway.html,国际海事组织。基本上是Kind
不用于比较。这样做很可能会破坏旧代码,而且并不总是您想要的。它是为 .NET 1.1 添加的,但并不总是以一种很好的方式添加 - 正如您在比较中看到的那样,它绝对没有以您可能期望的所有方式完全集成。
作为另一个例子,即使对于Kind
of Local
(这意味着系统本地时区)它在算术中被忽略,这意味着调用AddHours(1)
实际上只是增加了本地时间,而不是代表elapsed时间(最终可能与当地时间相同,或者在夏令时转换前后,当地时间晚两个小时)。
我的建议是避免比较DateTime
首先是不同种类的价值观。这几乎从来都不是你想做的事。
(当然我也推荐使用野田时间 http://nodatime.org,但情况略有不同。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)