2011-06-17 14 views
6

Mi sono imbattuto nella classe XMLGregorianCalendar qualche tempo fa e sono rimasto impressionato dal modo in cui ha reso GregorianCalendar un aspetto leggero. ;)Qualcuno può pensare a un uso pratico per XMLGregorianCalendar.getEon()?

Recentemente, ho notato un metodo BitInteger getEon() che mi confonde.

Dal Javadoc per XMLGregorianCalendar

getYear() è un valore compreso tra - (10^9-1) a (10^9) -1 o DatatypeConstants.FIELD_UNDEFINED. getEon() è un valore anno di ordine elevato in miliardi di anni.

Mi sembra che la durata della giornata sulla Terra cambia in modo significativo per milioni di anni e che il numero di giorni in un anno è cambiato. Il calendario gregoriano non avrebbe avuto senso un miliardo di anni fa o un miliardo di anni. Quindi getEon() può essere impostato sensibilmente su 0 o lasciato indefinito che ha lo stesso risultato.

La mia domanda: mi manca qualcosa? Esiste un uso ragionevole per il metodo getEon()?

risposta

4

Bene, in base a http://www.merlyn.demon.co.uk/critdate.htm l'ora di Unix che utilizza un numero intero a 64 bit terminerà intorno all'anno 3E11. Dato che Java utilizza millisecondi invece di secondi, l'ora di Java (64 bit) terminerà intorno a 3E8. Quindi questo fornisce un'espansione oltre i limiti della JVM.

In una nota più pratica, quando si utilizza questa scala di tempo si parla di eventi geologici, evolutivi o cosmologici, quindi il resto dei dati in una data (anno, mese, giorno ...) non ha senso. È meglio se usi un lungo con l'anno (o anche un int con l'eone) e dimentichi il resto.

Sembra che qualcuno fosse davvero, davvero annoiato (e noioso).


Edit: Naturalmente, c'è sempre qualche problema folli che possono utilizzare, ma non i problemi del mondo reale (come in: "se abbiamo una Torri di Hanoi con 64 dischi e spostare un disco di un secondo, quando finiremmo a scambiare le torri ").

Problemi correlati