谜语:三个相等的日期何时不相等

Jon*_*len 2 .net

从三个变量开始,都是System.DateTime.

a: 10/2/2009 2:30:00 PM
b: 10/2/2009 2:30:00 PM
c: 10/2/2009 2:30:00 PM
Run Code Online (Sandbox Code Playgroud)

将它们相互比较.

a=b: True
b=c: True
c=a: True
Run Code Online (Sandbox Code Playgroud)

好的,我们已经确定所有三个日期都是平等的.因此,当我们将它们全部转换为世界时,我们将得到相同的结果.对?

a.ToUniversalTime: 10/2/2009 9:30:00 PM
b.ToUniversalTime: 10/2/2009 9:30:00 PM
c.ToUniversalTime: 10/2/2009 2:30:00 PM
Run Code Online (Sandbox Code Playgroud)

所以发生了什么事?

Mic*_*urr 8

来自http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx:

从.NET Framework 2.0版开始,ToUniversalTime方法返回的值由当前DateTime对象的Kind属性确定.

  • 种类== Utc - 未执行转换
  • 种类==本地或未指定 - 根据当地时区执行转换