2013-07-02 27 views
0

我正在尝试http://www.epochconverter.com/,我可以做100年,但是当我进入99年时,它似乎分解并报告1999而不是0099.这是一个错误吗?时代应该能代表多远。历元时间可以回溯多久?

我也尝试插入MIN_LONG + 1到joda时间,它报告-292275055-05-16T16:47:04.192Z基本上年-292275055这听起来比1999年更正确一些,epochconverter.com甚至不能解析分钟。

允许的历元时间的最小值是多少?我可以使用分钟吗?

感谢, 院长

回答

3

理论上没有限制。 “纪元时间”仅仅是指定时间点之前/之后的秒数(1970年1月1日,格林威治标准时间午夜)。使用足够宽的数字类型,您可以用这些术语来描述任何时间。

在实践中,这样的时间值变得毫无意义超出一定限度:

  • 有符号的32位整数具有约-2十亿的最小值,对应于一个日期晚1901

  • 如果您对日期使用浮点类型,它将失去超出某个点的分辨率。不要为时间值使用单精度(32位)浮点数;他们的分辨率约为当前日期的两分钟(128秒)!尽管如此,在可预见的未来,64位浮点数仍然可以,因为它们可以精确地表示所有32位整数。

  • 时区在1900年左右还没有标准化,所以试图在此之前表示一段时间是不准确的。

  • 公历并没有在1582年之前定义过(直到20世纪20年代才被普遍使用!),所以试图在日期上使用标准的日期转换例程,这些日期会带来不正确的结果。

  • 同样,Anno Domini(“AD”)日历直到公元525年才被定义。此外,请注意,没有年份0.

  • 某些图书馆可能有其他任意限制或限制。例如,您在这里遇到的一个问题是,Javascript日期库假定在1900年到1999年之间,年数少于100的是年份的简写。

0

1970年1月1日在Unix类系统。

2

通过“时代”,我猜你的意思是维基百科称之为“Unix time”,自1970-01-01 00:00:00 UTC以来的秒数。使用32位有符号整数,它可以表示从1901-12-13到2038-01-19(GMT)的日期(正如您可以通过在epochconverter中输入-2^31和2^31-1的值您链接的网站)。 Unix时间本身没有最小或最大日期或精度,唯一的限制是用什么样的数字来定义它。

Joda-Time显然有时间定义为自纪元以来的毫秒数,使用long(64位有符号整数)来存储它。这有一个从-292275055(或292,275,055公元前,如果你喜欢)到+292278994(公元292,278,994)的范围。

0

1月1日,1970年如果你大纪元时间在64位系统之前去的话,你会得到一个下溢,这将创造一个5倍的时间比宇宙的预计时间。这是什么导致iPhone 5S的错误53 +

0

它将输入年份99解释为1999年的原因是因为它更可能使用JavaScript函数Date.parse()来解析您的日期,特别异常。

您可以在另一个在线时间戳分析器(例如http://www.convertunixdate.com/)中获得正确解析的时间戳 - 您可能需要输入年份作为4位数字以确保其未被更改。