Frage

Was ist der Maximal- und Minimalwert eines GregorianCalendar?

Sind sie in einem konstanten wie Integer.MAX_VALUE, oder vielleicht GregorianCalendar.get (BLAH)?

Auf den Punkt gebracht, wie kann ich eine GregorianCalendar Instanz mit Min- / Max-Wert?

War es hilfreich?

Lösung

Dies sollte funktionieren:

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

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

Andere Tipps

Ich nahm joekutner Vorschlag und lief es mit:

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

, die zeigt, die Minimal- und Maximal, und zwischen ihnen ein Hinweis darauf, was passiert, wenn Sie versuchen, die zweite vor dem Minimum zu bewegen -. Sie wickeln um

Das war Version 1.6.0_17.


Sie können versuchen, eine href zu nennen <= "http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#getMinimum%28int%29" rel =“ nofollow noreferrer "> Calendar.getMinimum () für jede Art von Feld (dh Jahr, Monat, etc.) und dann diese Minimalwerte eingestellt auf Feldtypen entsprechen. Dies würde Ihnen die Mindest Kalender. Ich weiß nicht, ob es ein schneller Weg, um das zu tun.

Die anderen Antworten richtig sein, aber veraltete Klassen verwenden.

java.time

Die alten Datum Zeitklassen (java.util.Date/.Calendar etc.) wurden von der java.time Rahmen eingebaut in Java 8 und höher.

Die java.time Klassen sind inspiriert von Joda-Time , definiert durch JSR 310 , durch das ThreeTen-extra Projekt erweitert, zurückportiert zu Java 6 & 7 durch die ThreeTen-Backport Projekt und in der ThreeTenABP Projekt. Siehe Tutorial .

Für einen Moment auf die Timeline in UTC mit einer Auflösung von ns , verwendet Instant . Bei einem gegebenen Offset-from-UTC , verwendet OffsetDateTime . Für eine Zeitzone (Offset + Regeln für Anomalien), verwendet ZonedDateTime , sondern von Natur aus nicht bestimmbaren min / max, noch hat ZoneId . Für nur das Datum Wert ohne Zeit-of-Tag und ohne Zeitzone, verwendet LocalDate . Für einen Zeit-of-Tag nur Wert ohne Datum und ohne Zeitzone, verwendet LocalTime . Denn ohne Zeitzone Datum-Zeit, verwenden Sie LocalDateTime .

Im Folgenden sind alle vordefinierten Konstanten.

Achtung: Seien Sie vorsichtig, diese Werte als eine Art Flagge oder eine besondere Bedeutung zu verwenden. Viele andere Software-Bibliotheken und Datenbanken können nicht diese extremen Werte unterstützen.

Für eine Fahne oder eine besondere Bedeutung, wie ein nicht-null „kein Wert verfügbar“, schlage ich vor Kommissionierung einen beliebigen Moment aber vermeiden zu solchen extremen Reichweiten gehen entweder rückwärts oder vorwärts in der Zeit. Vielleicht ist der Unix Epoche Stichtag , der erste Moment des Jahres 1970 in UTC, 1970-01-01T00: 00: 00Z. Definiert als eine Konstante in Java: Instant.EPOCH


über java.time

Die java.time Rahmen 8 in Java gebaut und später. Diese Klassen verdrängen die lästige alte Vermächtnis Datum Zeitklassen wie java.util.Date , Calendar & SimpleDateFormat .

Die Joda-Time Projekt jetzt in < a href = "https://en.wikipedia.org/wiki/Maintenance_mode" rel = "nofollow noreferrer"> Wartungsmodus , rät Migration auf die java.time Klassen.

Um mehr zu erfahren, finden Sie in der Oracle Tutorial . Und Stack-Überlauf suchen viele Beispiele und Erklärungen. Spezifikation JSR 310 .

können Sie tauschen java.time Objekte direkt mit Ihrer Datenbank. Verwenden Sie einen JDBC-Treiber kompatibel mit JDBC 4.2 oder höher. Keine Notwendigkeit für Streicher, keine Notwendigkeit für java.sql.* Klassen.

Wo die java.time Klassen erhalten?

Die ThreeTen-Extra Projekt erstreckt java.time mit zusätzlichen Klassen. Dieses Projekt ist eine Bewährungsprobe für eine mögliche zukünftige Ergänzungen java.time. Sie können einige nützliche Klassen hier wie Interval YearWeek , YearQuarter und mehr .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top