在几微秒内损失2小时

时间:2012-05-31 10:09:31

标签: c# datetime

自1970年1月1日起,我有一个以微秒为单位的时间戳。我试图把它转换成

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

使用DateTime。 一个例子是:1337060932000000微秒 结果应该是2012年5月15日,7.48

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

2 个答案:

答案 0 :(得分: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时要小心,因为您只能确定这将是您的软件运行的计算机的本地时区,根据经验,我可以告诉您,它并不总是您所在的时区认为

答案 1 :(得分:1)

感谢您的提示。 我用这种方式解决了这个问题:

    int offset = 2;
    DateTime d = new DateTime(1979,1,1, offset,0,0);

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