6

少し前にクラスに出くわしましたがXMLGregorianCalendar、グレゴリオ暦が軽量に見えることに感銘を受けました。;)

最近、私を困惑させる方法に気づきBitInteger getEon()ました。

XMLGregorianCalendarのJavadocから

getYear()は、-(10 ^ 9-1)から(10 ^ 9)-1またはDatatypeConstants.FIELD_UNDEFINEDの間の値です。getEon()は、数十億年の高次の年の値です。

地球上の1日の長さが数百万年にわたって大幅に変化し、そこで1年の日数が変化したことに気づきました。グレゴリオ暦は、10億年前、または10億年後では意味がありません。したがって、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個のディスクを備えたハノイタワーがあり、1秒間にディスクを移動した場合、タワーの交換はいつ終了しますか」 )。

于 2011-06-17T12:34:32.873 に答える