下面是我在 VS2010 中的即时窗口中的复制和粘贴。请注意,Now 函数的字符串表示形式相同,但它们的二进制表示形式大不相同。从 CDate 展开 Now 函数没有任何区别。为什么?
?CDate(Now)
1/8/2013 10:06:46 AM
?CDate(Now.ToString)
1/8/2013 10:06:52 AM
?CDate(Now.ToString).ToBinary
634932364230000000
?CDate(Now).ToBinary
-8588439384563815032
?Now.ToBinary
-8588439380551725996
请注意,我现在在每一行都使用完全相同的时间。为什么我在使用 ToString 函数时会得到“异常”的数值结果?
?Now.ToBinary
-8588439366264255565
?datetime.FromBinary(-8588439366264255565)
1/8/2013 10:37:39 AM
?datetime.FromBinary(-8588439366264255565).ToBinary
-8588439366264255565
?cdate(datetime.FromBinary(-8588439366264255565).ToString ).ToBinary
634932382590000000
?CDate(datetime.FromBinary(-8588439366264255565)).ToBinary
-8588439366264255565