自1970年1月1日起,我有一个以微秒为单位的时间戳。我试图把它转换成
yyyy.MM.dd HH.mm.ss.ffffff
使用DateTime。 一个例子是:1337060932000000微秒 结果应该是2012年5月15日,7.48
但我得到的结果是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);
此示例已简化。偏移量在外部文件中指定,因此您可以轻松地在不同的时区修改它。