我得到了一些奇怪的結果:C#與怪日期時間
Console.WriteLine(new DateTime(1296346155).ToString());
結果是:
01.01.0001 0時02分09秒
但是這是不對的!
我從某個文件解析了值1296346155。它說它是UTC;
請解釋;)
謝謝大家幫忙)))
我得到了一些奇怪的結果:C#與怪日期時間
Console.WriteLine(new DateTime(1296346155).ToString());
結果是:
01.01.0001 0時02分09秒
但是這是不對的!
我從某個文件解析了值1296346155。它說它是UTC;
請解釋;)
謝謝大家幫忙)))
DateTime預期「日期和時間以公曆日期00:00:00.000的0001年1月1日以來經過的100納秒間隔的數量表示。」 (從msdn)
This question顯示瞭如何將unix時間戳轉換爲DateTime。
謝謝你的鏈接;) – Edward83 2011-04-12 10:42:18
接受long
類型期待ticks
價值,而不是秒,甚至毫秒,而不是從1/1/1970
像其他的日期時間的構造!語言。
所以1296346155滴答is 129 seconds。
這是2分鐘和9秒:-) – 2011-04-12 14:24:06
這是正確的 - 你期待它是什麼?爲什麼?
構造函數System.DateTime(Int64)從0001年1月1日起(公曆日期)採用100納秒間隔的數量(稱爲Ticks)。
因此,1296346155/10000000給出了秒數129.6。
因此,本應在1月1日顯示自午夜2分9秒0001
伊夫發現下面的主題那裏是Unix時間戳(你有一個)和.Net的DateTime
之間的變換如果是Unix時間,那麼下面應該會產生預期的結果;
DateTime baseTime = new DateTime(1970, 1, 1, 0, 0, 0);
Console.WriteLine(baseTime.AddSeconds(1296346155));
有關更多信息,請參閱Unix Time。
構造函數不是你想要的,因爲時間不是用滴答聲測量的。
DateTime start = new DateTime(1970,1,1,0,0,0,0);
start = start.AddSeconds(1296346155).ToLocalTime();
Console.WriteLine(start);
// You don't need to use ToString() in a Console.WriteLine call
它可能是Unix時間。試試這個:http://stackoverflow.com/questions/249760/how-to-convert-unix-timestamp-to-datetime-and-vice-versa – Kobi 2011-04-12 10:31:00
什麼是一些文件?我猜測它是在使用1601年1月1日(UTC)作爲其偏移量的WIN32 FileTime中,而不是Jan1,0001。 – 2011-04-12 10:32:58