2012-05-31 67 views
1

自1970年1月1日以來,我有一個以微秒爲單位的時間戳。我試圖將其轉換爲以微秒爲單位丟失2小時

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

使用DateTime。 一個例子是:1337060932000000微秒 結果應該是2012年5月15日,7.48

但是我得到的結果是2個小時了。 可能是什麼原因?

+2

時區可能? – assylias

+0

那可能是UTC! !你好嗎 – V4Vendetta

+0

考慮當地時間偏移和夏令時。 –

回答

1

感謝您的提示。 我解決了這個問題是這樣的:

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

這個例子被簡化。偏移量在外部文件中指定,因此您可以輕鬆修改它以適應不同的時區。

2

由於Unix紀元是這個時區,你最可能得到一個UTC日期。請確保您所創建的基準日爲這樣:

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時要小心,因爲您只能確定這是您的軟件運行的計算機的本地時區,根據經驗,我可以告訴您,它並非總是您想的時區。