我得到了一些奇怪的结果: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