1

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

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

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

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

4

2 回答 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,因为您只能确定这将是您的软件正在运行的计算机的本地时区,并且根据经验,我可以告诉您它并不总是您认为的时区。

于 2012-05-31T10:14:58.960 回答
1

感谢您的提示。我这样解决了这个问题:

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

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

于 2012-05-31T10:24:05.937 回答