以微秒为单位损失 2 小时

本文关键字:小时 损失 为单位 | 更新日期: 2023-09-27 18:35:47

我有一个自 1.1.1970 以来以微秒为单位的时间戳。我试图将其转换为

          yyyy.MM.dd HH.mm.ss.ffffff 

使用日期时间。例如:1337060932000000微秒结果应该是 May 15 2012, 7.48

但我得到的结果是 2 小时。可能是什么原因?

以微秒为单位损失 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);

此示例已简化。偏移量在外部文件中指定,因此您可以针对不同的时区轻松修改它。