自 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);
这个例子被简化了。偏移量是在外部文件中指定的,因此您可以针对不同的时区轻松修改它。