6

不久前我遇到了这XMLGregorianCalendar门课,它使 GregorianCalendar 看起来很轻量级的方式给我留下了深刻的印象。;)

最近,我注意到一种BitInteger getEon()让我感到困惑的方法。

来自 XMLGregorianCalendar 的 Javadoc

getYear() 是介于 -(10^9-1) 到 (10^9)-1 或 DatatypeConstants.FIELD_UNDEFINED 之间的值。getEon() 是十亿年的高阶年值。

我突然想到,随着地球上一天的长度在数百万年中发生显着变化,一年中的天数也发生了变化。公历在十亿年前或十亿年后都没有意义。所以 getEon() 只能合理地设置为0或未定义,其结果大致相同。

我的问题:我错过了什么吗?getEon()该方法有合理的用途吗?

4

1 回答 1

4

好吧,根据http://www.merlyn.demon.co.uk/critdate.htm使用 64 位整数的 unix 时间将在 3E11 年左右结束。鉴于 Java 使用毫秒而不是秒,Java 时间(64 位)将在 3E8 左右结束。因此,这提供了一些超出 JVM 限制的扩展。

在更实际的说明中,当您使用这种时间尺度时,您正在谈论地质、进化或宇宙学事件,因此日期(年、月、日...)中的其余数据是没有意义的。最好在年份中使用 long(甚至在 eon 中使用 int)而忘记其余部分。

看起来有人真的,真的很无聊(而且很无聊)。


编辑:当然,总是有一些疯狂的问题可以使用它,但不是现实世界的问题(例如:“如果我们有一个有 64 个圆盘的河内塔并且每秒移动一个圆盘,我们什么时候才能完成交换塔” )。

于 2011-06-17T12:34:32.873 回答