gpt4 book ai didi

c# - 将 DateTime 转换为 unix 时间戳并再次返回 - 结果不相等

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:38 25 4
gpt4 key购买 nike

我最近开始学习 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 上的 == 测试应该比较值而不是 refs。

最佳答案

它们不一样。查看 dateTime.TicksdateTimeConvertedBack.Ticks

这会起作用:

DateTime dateTimeConvertedBack = ePoch.AddTicks(timeSpan.Ticks);

关于c# - 将 DateTime 转换为 unix 时间戳并再次返回 - 结果不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com