Domanda

Quali sono i valori massimi e minimi di un GregorianCalendar?

Sono in una costante come Integer.MAX_VALUE, o forse GregorianCalendar.get (BLAH)?

In poche parole, come posso creare un'istanza GregorianCalendar con min / max valore?

È stato utile?

Soluzione

Questo dovrebbe funzionare:

GregorianCalendar maxgc = new GregorianCalendar();
maxgc.setTime(new Date(Long.MAX_VALUE));

GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));

Altri suggerimenti

ho preso il suggerimento di joekutner e corsi con:

GregorianCalendar gCal = new GregorianCalendar( );

gCal.setTime(new Date(Long.MIN_VALUE));
System.out.println( "Min Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));

gCal.set( Calendar.SECOND, 3 );
System.out.println( "Min Date less 1 second is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));

gCal.setTime(new Date(Long.MAX_VALUE));
System.out.println( "Max Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));


Min Date is Sun Dec 02 16:47:04 GMT 292269055 0
Min Date less 1 second is Sun Aug 17 07:12:54 GMT 292278994 1
Max Date is Sun Aug 17 07:12:55 GMT 292278994 1

che mostra il minimo e massimo, e tra di loro un'indicazione di ciò che accade se si tenta di passare alla seconda, prima del minimo -. Si avvolgono intorno

Questa era la versione 1.6.0_17.


Si può provare a chiamare Calendar.getMinimum () per ogni tipo di campo (cioè anno, mese, ecc) e quindi impostare i valori minimi corrispondenti tipi di campo. Questo darebbe il calendario minimo. Non so se c'è un modo più veloce per farlo.

Le altre risposte può essere corretto, ma utilizzare le classi fuori moda.

java.time

Le classi vecchia data-ora (java.util.Date/.Calendar etc.) sono stati soppiantati dal java.time quadro integrato in Java 8 e versioni successive.

Le classi java.time sono ispirati da Joda Time , definito da JSR 310 , esteso dal progetto ThreeTen-Extra, back-porting per Java 6 & 7 dalla ThreeTen-Backport progetto , e atto ad Android nel ThreeTenABP progetto. Vedere Tutorial .

Per un attimo sulla timeline in UTC con una risoluzione di nanosecondi , uso Instant . Dato un offset da UTC-, uso OffsetDateTime . Per un fuso orario (offset + regole per anomalie), l'uso ZonedDateTime , ma per sua natura non ha definito min / max, né ZoneId . Per un valore di data-solo senza tempo del giorno e senza fuso orario, l'uso LocalDate . Per un certo periodo del giorno unico valore senza data e senza fuso orario, l'uso LocalTime . Per data-ora, senza fuso orario, utilizzare LocalDateTime .

Di seguito sono tutte le costanti predefinite.

Attenzione: Diffidare di utilizzare questi valori come una sorta di bandiera o un significato speciale. Molte altre librerie software e banche dati potrebbero non supportare questi valori estremi.

Per una bandiera o significato speciale come un non-null "nessun valore disponibile", suggerisco raccogliendo un momento arbitrario ma non andare a tali estremi raggiunge sia avanti o indietro nel tempo. Forse il Unix riferimento epoca data , il primo momento del 1970 in UTC, 1970-01-01T00: 00: 00Z. Definito come una costante in Java: Instant.EPOCH


A proposito di java.time

Il java.time quadro è costruito in Java 8 e versioni successive. Queste classi soppiantare la vecchia fastidioso legacy classi data-time come java.util.Date , Calendar , e SimpleDateFormat .

Il Joda Time progetto , ora in < a href = "https://en.wikipedia.org/wiki/Maintenance_mode" rel = "nofollow noreferrer"> modalità manutenzione , consigliati migrazione al java.time classi .

Per ulteriori informazioni, vedere la Oracle Esercitazione . E cercare Stack Overflow per molti esempi e spiegazioni. Le specifiche sono JSR 310 .

E 'possibile scambiare java.time oggetti direttamente con il database. Utilizzare un driver di JDBC compatibile con JDBC 4.2 o successiva. Non c'è bisogno di corde, non c'è bisogno per le classi java.sql.*.

Dove ottenere le classi java.time?

Il ThreeTen-Extra progetto estende java.time con classi aggiuntive. Questo progetto è un banco di prova per eventuali future integrazioni java.time. Si possono trovare alcune classi utili, come per esempio Interval , YearWeek , YearQuarter , e informazioni .

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