2014-09-01 168 views
0

我得到了將UNIX時間轉換爲DaTime的功能,該功能無論如何都工作得很好現在我需要將函數從DateTime轉換爲UNIX時間戳,但是這樣做是錯誤的,因爲當我通過DateTime以某種方式最後3位數字不顯示,例如我有這個時間戳:「1300124700345」,這等於:14.03.2011 5:45 PM。當我傳遞給我的函數時,我正在檢索:「1300124700」 - 3個最後的數字dissaperd。從日期時間轉換爲unix毫秒

static readonly DateTime UnixEpoch = 
     new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 

public static long ToUnixTime(DateTime date) 
{ 
    return Convert.ToInt64((date - UnixEpoch).TotalSeconds); 
} 
+0

除了上述鏈接中的信息,時間是...煩躁,而不是真正的準確。看看Jon Skeets博客上的一些關於這個問題的博客......這很有趣。 – Noctis 2014-09-01 07:47:52

回答

0

Unix計算自01.01.1970以來的秒數。你的功能是正確的,它返回TotalSeconds

1300124700345秒是大約40000年,這將是錯誤的。

0

此外,你可以看看這個頁面:Epoch converter,它會給你一個很好的簡單的方法來測試你的數據。

在此:epoch on wikipedia閱讀一些關於它如何表現以及它有多精確的有趣點。

,並使用此:

var epoch = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; 

得到你想要的東西。