2010-10-01 5 views
41

Was ist der Mindestdatumswert in Java?Mindestdatum in Java

+19

Was bedeutet das Mindestdatum? – qrtt1

+0

möglich Duplikat [Java: Was/wo die Maximal- und Minimalwerte eines GregorianCalendar sind] (http://stackoverflow.com/questions/2393016/java-what-where-are-the-maximum-and-minimum- values-of-a-gregoriancalendar) –

+0

Dieses Thema anzeigen http://StackOverflow.com/Questions/2393016/java-what-are-are-the-maximum-and-minimum-values-of-gregoriancalendar – sproketboy

Antwort

36

Wenn Sie über java.util.Date als Zeitpunkt reden können Sie dieses tun

Date d = new Date(0L) und Sie werden sehen, diese Do 1. JANUAR 01.00.00 GMT 1970 hat


Wie tulskiy wies darauf hin, stellt Es ist möglich, einen negativen Wert an den Date-Konstruktor zu übergeben. Wenn wir diese und verwenden Sie ein Datumsformat zu tun, die die Ära beinhaltet können wir sehen:

Date d = new Date(Long.MIN_VALUE); 
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy G HH:mm:ss Z"); 
System.out.println(df.format(d)); 

zeigt: So 2. Dezember 292.269.055 BC 16.47.04 0.000

55

nicht, dass die Date-Konstruktor Vergessen Sie akzeptiert gerne negative Werte.

Date date = new Date(Long.MIN_VALUE); 

kehrt

Sun 2. Dezember 22.47.04 BDT 292269055

Ich denke, das ist über die Zeit des Big Bang Dinosaurier :)

EDIT

Als martin clayton beantwortet, können Sie die Ära mit der Kalender-Klasse überprüfen. Dies wird 0 ausgeben, was für BCE steht:

Calendar calendar = Calendar.getInstance(); 
calendar.setTime(new Date(Long.MIN_VALUE)); 
System.out.println(calendar.get(Calendar.ERA)); 
+2

Aber das scheint ein Datum in der Zukunft zu sein (Jahr 292269055), nicht in der Vergangenheit. Scheint, dass der Parameter als ein positiver Wert interpretiert wird. – Grodriguez

+0

@Grodriguez - wie ist die Ära in diesem Jahr? ;-) –

+0

@Grodriguez: siehe meine Bearbeitung, es ist ein Wert in der Vergangenheit. –

4

Es ist das gleiche wie für die Kalenderklassen.

Versuchen Sie folgendes:

Date d = new Date(Long.MIN_VALUE); 
System.out.println(d); 

Sie werden sehen:

Sun Dec 02 16:47:04 GMT 292269055 

Aber das Standard-Datumsformat beinhaltet nicht die Ära - die BCE ist zu diesem Datum gefunden.

11

Die anderen Antworten sind möglicherweise korrekt, verwenden aber veraltete Klassen.

java.time

Die alten Datum Zeitklassen (java.util.Date/.Calendar etc.) werden von den java.time Rahmen eingebaut in Java 8 und später ersetzt worden.

Die java.time Klassen von Joda-Time inspiriert sind, definiert durch JSR 310, durch das ThreeTen-Extra Projekt erweitert, zurückportiert zu Java 6 & 7 durch das ThreeTen-Backport Projekt und angepasst im ThreeTenABP Projekt auf Android. Siehe Tutorial.

Verwenden Sie für einen Moment auf der Timeline in UTC mit einer Auflösung von nanosecondsInstant. Geben Sie unter offset-from-UTCOffsetDateTime ein.Für eine time zone (Offset + Regeln für Anomalien), verwenden Sie ZonedDateTime, aber hat von Natur aus kein definiertes Minimum, noch ZoneId. Verwenden Sie für einen reinen Datumswert ohne Uhrzeit und ohne Zeitzone LocalDate. Verwenden Sie für einen Nur-Tageszeit-Wert ohne Datum und ohne Zeitzone LocalTime. Verwenden Sie für Datum-Uhrzeit ohne Zeitzone LocalDateTime.

Vorsicht: Seien Sie vorsichtig, diese Werte als eine Art Flagge oder eine besondere Bedeutung zu verwenden. Viele andere Softwarebibliotheken und Datenbanken unterstützen diese extremen Werte möglicherweise nicht.

Für eine Flagge oder eine spezielle Bedeutung, wie ein Nicht-Null "kein Wert verfügbar", empfehle ich, einen beliebigen Moment auszuwählen, aber vermeiden, zu solchen extremen Rängen entweder rückwärts oder vorwärts in der Zeit zu gehen. Vielleicht der Unix epoch reference date, der erste Moment von 1970 in UTC, 1970-01-01T00: 00: 00Z. Definiert als eine Konstante in Java: Instant.EPOCH

0

Da Date als Veraltete markiert, dachte ich, es sollte eine andere Möglichkeit, um dieses Problem zu umgehen, so schaute ich auf einige der Methoden, und ich fand auf diese Weise

Sie können es verwenden Long.MIN_VALUE, zu der Zeit ich dies schrieb, hatte ich nicht nach ihm, und selbst/so habe ich mich nicht erinnern, aslo. enter image description here

+2

** Falsch: ** Die Klasse 'java.util.Date' ist * nicht * veraltet (sollte aber sein). Einige seiner Methoden sind veraltet, aber nicht die gesamte Klasse.Außerdem bietet diese Antwort keinen großen Wert für meine Meinung. –

+0

ich überprüfe es einfach nochmal, und du hattest Recht. einige seiner Konstruktoren ADN-Methode sind, aber nicht wholy – deadManN

Verwandte Themen