以微秒为单位损失 2 小时
本文关键字:小时 损失 为单位 | 更新日期: 2023-09-27 18:35:47
我有一个自 1.1.1970 以来以微秒为单位的时间戳。我试图将其转换为
yyyy.MM.dd HH.mm.ss.ffffff
使用日期时间。例如:1337060932000000微秒结果应该是 May 15 2012, 7.48
但我得到的结果是 2 小时。可能是什么原因?
您很可能会获得UTC日期,因为Unix纪元是这个时区。请确保按如下方式创建基准日期:
var epoch = new DateTime(1970,1,1, 0,0,0, DateTimeKind.Utc);
一旦你有了它,你可以做这样的事情:
var localTime = epoch.AddMilliseconds(microseconds / 1000).ToLocalTime();
如果microseconds
是你上面提供的值,你得到的值是15/05/2012 07:48:52
这就是你期望的。
但是,使用ToLocalTime
时要小心,因为您只能确定这将是运行软件的计算机的本地时区,并且根据经验,我可以告诉您,它并不总是您认为的时区。
感谢您的提示。我以这种方式解决了问题:
int offset = 2;
DateTime d = new DateTime(1979,1,1, offset,0,0);
此示例已简化。偏移量在外部文件中指定,因此您可以针对不同的时区轻松修改它。