2009-11-19 224 views
5

我必須做一個明顯的錯誤,但我無法弄清楚。Unix時間戳到.net日期時間

我正在導入一個存儲在mysql數據庫中的日期(它由ExpressionEngine CMS存儲)。它是一個unix時間戳,即自1970年1月1日00:00以來的秒數。

所以我在做這樣的事情:

DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 
dateTime = dateTime.AddSeconds(orderdate /* int read from the database */); 

不幸的是我沒有得到正確的結果。這裏有一個例子:

值從數據庫中讀取:(這是訂單日期)

寶2009年11月18日12點45分20秒發送的電子郵件建立以便在PST

在數據庫中讀取此值並知道如何正確顯示此日期的php網站將其顯示爲2009-11-18 03:45 PM(這似乎是正確的,因爲我託管在服務器上東海岸)

我上面的代碼給出11/19/2009 2:45:28 AM !! (UTC時間爲東部時間11/18/2009 9:45 PM,即與預期時間相差6小時)

如果使用DateTimeOffset負責放置正確的時區,我會得到相同的結果。

任何想法我做錯了什麼?

回答

9

試試這個:

DateTime epoch = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc); 
DateTime myDate = epoch.AddSeconds(1258598728).toLocalTime(); 
+0

它打印出:11/18/2009 9:45:28 PM here(格林威治標準時間-4) – Gonzalo

+0

是我還是一樣的價值我得到(與預期值相差6小時) –

+0

好了,那麼它必須是數據的問題。 – scottm

0

您的轉換是正確的,數據是錯誤的。這是最簡單也是最可能的解釋。