当我在DateTime对象上调用ToUniversalTime()
时,该方法似乎返回一个新的DateTime对象,完全代表不同的时间。我预计它会跨越时区来进行武装。
代码
DateTime dt = new DateTime(635229891600000000);
Console.WriteLine(dt.ToString());
Console.WriteLine(dt.ToUniversalTime().ToString());
输出
12/18/2013 6:46:00 PM
12/19/2013 12:46:00 AM
这正是我所期待的。
但是,如果我查看DateTime对象的Ticks值
DateTime dt = new DateTime(635229891600000000);
Console.WriteLine(dt.Ticks.ToString());
Console.WriteLine(dt.ToUniversalTime().Ticks.ToString());
输出
635229891600000000
635230107600000000
表示ToUniversalTime
的输出实际上与输入的Ticks值不同。
Ticks属性表示自常量DateTime.MinValue
以来100纳秒间隔的数量。
根据MSDN documentation,ToUniversalTime
方法返回“Kind属性为Utc且其时间等于当前DateTime对象值的UTC的对象”。如果两个DateTime对象具有不同的Ticks值,那么它们如何是UTC等价的,因此表示不同的时间?