2010-10-01 105 views
41

¿Cuál es el valor mínimo de fecha en Java?Fecha mínima en Java

+19

¿Qué significa la fecha mínima? – qrtt1

+0

posible duplicado de [Java: ¿Cuáles/dónde son los valores máximo y mínimo de un Calendario Gregorian?] (Http://stackoverflow.com/questions/2393016/java-what-where-are-the-maximum-and-minimum- values-of-a-gregoriancalendar) –

+0

Ver este hilo http://stackoverflow.com/questions/2393016/java-what-where-are-the-maximum-and-minimum-values-of-a-gregoriancalendar – sproketboy

Respuesta

36

Si usted está hablando de java.util.Date como una marca de tiempo se puede hacer esto

Date d = new Date(0L) y verá que esto representa Jue Ene 01 01:00:00 GMT 1970


Como se ha señalado tulskiy es posible pasar un valor negativo al constructor de Fecha. Si hacemos esto y utilizar un formato de fecha que incluye la época podemos ver:

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

muestra: Dom 2 Dic 0000 16:47:04 292 269 055 aC

55

No se olvide que el constructor Fecha felizmente acepta valores negativos.

Date date = new Date(Long.MIN_VALUE); 

vuelve

Sun Dec 02 22:47:04 BDT 292269055

supongo que es la época de Big Bang dinosaurios :)

EDITAR

Como martin clayton respondió, puede usar la clase Calendario para consultar la era. Esto dará como resultado 0 que significa BCE:

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

Pero esta parece ser una fecha en el futuro (año 292269055), no en el pasado. Parece que el parámetro se interpreta como un valor positivo. – Grodriguez

+0

@Grodriguez - ¿Cuál es la época de ese año? ;-) –

+0

@Grodriguez: ver mi edición, es un valor en el pasado. –

4

Es lo mismo que para las clases de calendario.

Prueba esto:

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

Verás:

Sun Dec 02 16:47:04 GMT 292269055 

Pero el formato de fecha por defecto no incluye la época - que es BCE para esta fecha.

11

Las otras respuestas pueden ser correctas pero usan clases obsoletas.

java.time

Las viejas clases de fecha y hora (java.util.Date/.Calendar etc.) han sido suplantada por el marco java.time incorporado en Java 8 y versiones posteriores.

El java.time clases se inspiran en Joda-Time, definido por JSR 310, extendida por el proyecto ThreeTen-Extra, de back-portado a Java 6 7 & por el proyecto ThreeTen-Backport, y adaptado a Android en el proyecto ThreeTenABP. Ver Tutorial.

Por un momento en la línea de tiempo en UTC con una resolución de nanoseconds, utilice Instant. Dado un offset-from-UTC, use OffsetDateTime.Para un time zone (desplazamiento + reglas para anomalías), use ZonedDateTime, pero por su naturaleza no tiene un mínimo definido, ni tampoco ZoneId. Para un valor de fecha solamente sin hora del día y sin zona horaria, use LocalDate. Para un valor de hora del día sin fecha y sin zona horaria, use LocalTime. Para la fecha y la hora sin zona horaria, use LocalDateTime.

Precaución: Tenga cuidado con el uso de estos valores como una especie de bandera o un significado especial. Muchas otras bibliotecas de software y bases de datos pueden no admitir estos valores extremos.

Para una bandera o un significado especial como "no hay valor disponible" no nulo, sugiero elegir un momento arbitrario pero evite llegar a tales extremos, ya sea hacia atrás o hacia adelante en el tiempo. Quizás el Unix epoch reference date, el primer momento de 1970 en UTC, 1970-01-01T00: 00: 00Z. Define como una constante en Java: Instant.EPOCH

0

Desde Date se marca como en desuso, pensé que debería haber otra manera de evitar esto, por lo que se veía en algunos de los métodos, y me encontré con esta forma

También puede utilizar Long.MIN_VALUE, en el momento en que escribí esto, no lo había buscado, e incluso/así que no lo recordaba. enter image description here

+2

** Incorrecto: ** La clase 'java.util.Date' está * no * obsoleta (pero debería ser). Varios de sus métodos están en desuso, pero no toda la clase.Además, esta respuesta no proporciona mucho valor a mi mente. –

+0

simplemente comprobé nuevamente, y usted tenía razón. algunos de sus métodos constructor y adn son, pero no completamente – deadManN