2010-10-01 9 views
41

Quelle est la valeur minimale de Java?Date minimale en Java

+19

Que signifie la date minimale? – qrtt1

+0

duplication possible de [Java: quoi/où sont les valeurs maximum et minimum d'un GregorianCalendar?] (Http://stackoverflow.com/questions/2393016/java-what-where-are-the-maximum-and-minimum- values-of-a-gregoriancalendar) –

+0

Voir ce fil http://stackoverflow.com/questions/2393016/java-what-where-are-the-maximum-and-minimum-values-of-a-gregoriancalendar – sproketboy

Répondre

36

Si vous parlez java.util.Date en tant que timestamp vous pouvez le faire

Date d = new Date(0L) et vous verrez ce qui représente Jeu 1 janvier 01:00:00 GMT 1970


Comme tulskiy a souligné il est possible de passer une valeur négative au constructeur Date. Si nous faisons cela et utiliser un format de date qui inclut l'époque dans laquelle nous pouvons voir:

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)); 

affiche: Dim 2 Déc 292269055 BC 16:47:04 +0000

55

Ne pas oublier que le constructeur Date accepte volontiers les valeurs négatives.

Date date = new Date(Long.MIN_VALUE); 

retours

Sun Dec 02 22:47:04 BDT 292269055

Je suppose que c'est à peu près le temps de Big Bang dinosaures :)

EDIT

Comme martin clayton répondu, vous pouvez utiliser la classe Calendrier pour vérifier l'ère. Cela produira 0 qui signifie BCE:

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

Mais cela semble être une date dans le futur (année 292269055), pas dans le passé. Semble que le paramètre est interprété comme une valeur positive. – Grodriguez

+0

@Grrriguez - quelle est l'époque de cette année cependant? ;-) –

+0

@Grrriguez: voir mon édition, c'est une valeur dans le passé. –

4

C'est la même chose que pour les classes de calendrier.

Essayez ceci:

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

Vous verrez:

Sun Dec 02 16:47:04 GMT 292269055 

Mais le format de date par défaut ne comprend pas l'époque - qui est BCE pour cette date.

11

Les autres Réponses peuvent être correctes mais utiliser des classes obsolètes.

java.time

Les anciennes classes de date-heure (java.util.Date/.Calendar etc.) ont été supplanté par le cadre java.time construit en Java 8 et versions ultérieures.

Les classes java.time sont inspirées par Joda-Time, définie par JSR 310, prolongé par le projet ThreeTen-Extra, back-porté à Java 6 7 & par le projet ThreeTen-Backport, et adapté à Android dans le projet ThreeTenABP. Voir Tutorial.

Pour un instant sur la chronologie dans UTC avec une résolution de nanoseconds, utilisez Instant. Étant donné un offset-from-UTC, utilisez OffsetDateTime.Pour un time zone (décalage + règles pour les anomalies), utilisez ZonedDateTime, mais par sa nature n'a pas de minimum défini, ni ZoneId. Pour une valeur de date uniquement sans heure et sans fuseau horaire, utilisez LocalDate. Pour une valeur d'heure unique sans date et sans fuseau horaire, utilisez LocalTime. Pour la date et l'heure sans fuseau horaire, utilisez LocalDateTime.

Attention: Méfiez-vous d'utiliser ces valeurs comme une sorte de sens drapeau ou spécial. De nombreuses autres bibliothèques de logiciels et bases de données peuvent ne pas prendre en charge ces valeurs extrêmes. Pour un drapeau ou une signification spéciale comme une valeur non-nulle "non disponible", je suggère de choisir un moment arbitraire, mais évitez d'aller à ces extrêmes extrêmes soit en arrière ou en avant dans le temps. Peut-être le Unix epoch reference date, le premier moment de 1970 en UTC, 1970-01-01T00: 00: 00Z. Défini comme une constante en Java: Instant.EPOCH

0

Depuis Date est marqué comme Obsolète, je pensais qu'il devrait y avoir une autre façon de contourner ce problème, donc je regardais quelques-unes des méthodes, et je l'ai trouvé cette façon

Vous pouvez aussi utiliser Long.MIN_VALUE, au moment où j'ai écrit ceci, je ne l'avais pas recherché, et même/je ne m'en souvenais pas. enter image description here

+2

** Incorrect: ** La classe 'java.util.Date' n'est pas obsolète (mais devrait l'être). Plusieurs de ses méthodes sont obsolètes mais pas la classe entière.En outre, cette réponse ne fournit pas beaucoup de valeur à mon esprit. –

+0

Je viens de vérifier à nouveau, et vous aviez raison. certains de son constructeur sont la méthode ADN, mais pas wholy – deadManN