我最近开始学习 C# 并遇到了一个错误,我追踪它并发现这是因为如果我将一个DateTime
对象转换为时间戳,然后再转换回一个DateTime
对象,结果DateTime
不等于原来的,即使对我来说他们看起来一模一样。
我整理了一个片段来展示我的意思
void Main()
{
DateTime ePoch = new DateTime(1970, 1, 1, 0, 0, 0);
DateTime dateTime = DateTime.UtcNow;
TimeSpan timeSpan = (dateTime.ToUniversalTime() - ePoch);
double unixTimeStamp = timeSpan.TotalSeconds;
DateTime dateTimeConvertedBack = ePoch.AddSeconds(unixTimeStamp);
System.Console.WriteLine(dateTime);
System.Console.WriteLine(dateTimeConvertedBack);
System.Console.WriteLine(dateTime.Millisecond);
System.Console.WriteLine(dateTimeConvertedBack.Millisecond);
System.Console.WriteLine(dateTime == dateTimeConvertedBack); //results in false??
}
哪个打印:
12/08/2013 15:43:56
12/08/2013 15:43:56
977
977
False
为什么这两个对象不被视为平等?
我很确定==
测试DateTime
应该比较值而不是参考。