C# 与 DateTime 很奇怪
我得到了一些奇怪的结果:
Console.WriteLine(new DateTime(1296346155).ToString());
结果是:
01.01.0001 0:02:09
但这是不对的!
我从某个文件中解析了值 1296346155 。它说是UTC;
请解释一下;)
谢谢您的帮助!)))
I got some strange result for:
Console.WriteLine(new DateTime(1296346155).ToString());
Result is:
01.01.0001 0:02:09
But it is not right!
I parsed value 1296346155 from some file. It said that it is in UTC;
Please explain;)
Thank you for help!)))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
DateTime 需要“以 100 纳秒间隔数表示的日期和时间,该间隔自公历 0001 年 1 月 1 日 00:00:00.000 起经过”。 (来自msdn)
此问题展示了如何将 unix 时间戳转换为 DateTime。
DateTime expects "A date and time expressed in the number of 100-nanosecond intervals that have elapsed since January 1, 0001 at 00:00:00.000 in the Gregorian calendar." (from msdn)
This question shows how you can convert a unix timestamp to a DateTime.
接受
long
类型的 DateTime 构造函数需要ticks
值,而不是秒甚至毫秒,也不是来自1/1/1970
的值,如其他语言。因此 1296346155 刻度是 129 秒。
The constructor for DateTime that accept
long
type is expectingticks
value, not seconds or even milliseconds, and not from1/1/1970
like in other languages.So 1296346155 ticks is 129 seconds.
如果是 Unix 时间,那么以下应该会产生预期的结果;
有关详细信息,请参阅 Unix 时间。
If it's Unix time, then the following should yield the expected result;
See Unix Time for more information.
该构造函数不是您想要的,因为时间不是以滴答为单位测量的。
That constructor is not what you want as the time is not measured in ticks.
我发现以下主题,其中 unix 时间戳(您拥有的时间戳)和 .Net DateTime 之间存在转换
如何将 Unix 时间戳转换为 DateTime,反之亦然?
Ive found the following subject where there is a conversion between unix timestamp (the one you have) and .Net DateTime
How to convert a Unix timestamp to DateTime and vice versa?
这是正确的 - 您期望它是什么以及为什么?
构造函数System.DateTime(Int64)采用100纳秒的数字自 0001 年 1 月 1 日(公历)以来的间隔(称为“刻度”)。
因此,1296346155 / 10000000 给出的秒数是 129.6。
因此,这应该显示自 0001 年 1 月 1 日午夜以来 2 分 9 秒。
That is correct - what were you expecting it to be and why?
The constructor System.DateTime(Int64) takes the number of 100-nanosecond intervals (known as Ticks) since January 1st 0001 (in the Gregorian calendar).
Therefore, 1296346155 / 10000000 gives you the number of seconds, which is 129.6.
Therefore, this should display 2 minutes and 9 seconds since midnight on 1st January 0001.