我需要將DateTime轉換爲Unix時間戳。所以我googled它尋找一些示例代碼爲什麼DateTime到Unix時間使用double而不是整數?
在幾乎所有的結果我看到,他們使用double
作爲回報,這樣的功能,即使在明確使用floor
將其轉換爲整數。 Unix時間戳總是整數。那麼使用long
還是int
而不是double會出現什麼問題?
static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan diff = date - origin;
return Math.Floor(diff.TotalSeconds);
}
恕我直言只是不驗證輸入日期。它應該返回一個長或特殊的結構 – onof
沒有理由,它只是不好的代碼。投到很長時間,它不能溢出。 –
根據定義,我將補充一點,Unix時間戳是UTC。該方法應檢查DateTime.Kind是否爲UTC,本地或未指定。至少如果本地我將轉換爲UTC,然後再執行轉換。或者,如果您想要一個本地的Unix時間戳,則可以添加一個重載或參數以不執行到UTC的轉換。 – Nate