Domanda

Mi sono imbattuto nel XMLGregorianCalendar Classe un po 'di tempo fa e sono rimasto colpito dal modo in cui ha fatto sembrare leggero GregorianCalendar. ;)

Di recente ho notato un metodo BitInteger getEon() che mi sconcerta.

Dal Javadoc per xmlgregorianCalendar

getyear () è un valore compreso tra-(10^9-1) a (10^9) -1 o DataTypeConstants.field_undefined. getEon () è un valore di alto anno in miliardo di anni.

Mi viene in mente che, poiché la durata della giornata sulla Terra cambia significativamente nel corso dei milioni di anni e lì per il numero di giorni in un anno è cambiata. Il calendario gregoriano non avrebbe senso un miliardo di anni fa o un miliardo di anni. Quindi getEon () può essere impostato solo in modo ragionevole su 0 o lasciato indefinito che ha molto lo stesso risultato.

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

È stato utile?

Soluzione

Bene, secondo http://www.merlyn.demon.co.uk/critdate.htm Il tempo di UNIX che utilizza 64 bit interi finirà intorno all'anno 3E11. Dato che Java usa millisecondi anziché secondi, Java Time (64 bit) finirà intorno a 3E8. Ciò fornisce un'espansione oltre i limiti del JVM.

In una nota più pratica, quando usi questa scala di tempo parli di eventi geologici, evolutivi o cosmologici, quindi il resto dei dati in una data (anno, mese, giorno ...) non ha senso. È meglio se usi molto con l'anno (o anche un INT con l'Eon) e dimentica il resto.

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


EDIT: Certo, ci sono sempre alcuni problemi folli che possono usarlo, ma non problemi nel mondo reale (come in: "Se abbiamo una torri di Hanoi con 64 dischi e spostare un disco al secondo, quando finiremmo di scambiare le torri" ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top