¿Cuáles son los valores máximo y mínimo de una GregorianCalendar?

Están en un constante como Entero.MAX_VALUE, o tal vez GregorianCalendar.get(BLA)?

En pocas palabras, ¿cómo puedo crear un GregorianCalendar instancia con min/max valor?

InformationsquelleAutor WaelJ | 2010-03-06

4 Comentarios

  1. 5

    Esto debería funcionar:

    GregorianCalendar maxgc = new GregorianCalendar();
    maxgc.setTime(new Date(Long.MAX_VALUE));
    
    GregorianCalendar mingc = new GregorianCalendar();
    mingc.setTime(new Date(Long.MIN_VALUE));
    • Lamentablemente la solución no funciona. Después de mingc.setTime(new Date(Long.MIN_VALUE)), se obtiene: migc.get(Calendar.AÑO) == 292269055 o algo así. Eso no suena como un min para mí:-).
    • Gracias =D solo estoy usando estos valores para la comparación, así que estoy bien, pero para otros esto puede ser digno de mención. De setTime() documentación: Nota: Llamar setTime() con Fecha de () de Largo.MAX_VALUE) o Fecha(de Largo.MIN_VALUE) puede producir incorrecta de los valores de campo de get().
    • pajton, verifique lo siguiente: <code>migc.get(Calendar.ERA)</código de> 0 significa BC 1 significa ANUNCIO con el fin de año 292269055 corresponde a 292269055 BC
    • A la derecha. Este es muy inteligente, de hecho;-)
    • Mejor uso new Date(0) para la fecha mínima.
    • La razón por la que he buscado, es que la Fecha está en desuso, y, sin embargo, utilizamos la Fecha para establecer el Calendario? 😐
    • puedo obtener valor positivo que había algunos trunca 0 en la final por largos minutos, y he comprobado js apoyado fecha y hora, me cambio de -9……..L a -8………L todavía tengo ese error, es positivo y no admitidos por JS

  2. 5

    Tomé joekutner la sugerencia y corrió 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

    Que muestra el mínimo y el máximo, y entre ellas una indicación de lo que sucede si se intenta pasar a la segunda antes de que el mínimo de envolver alrededor.

    Esta fue la versión 1.6.0_17.

    • Wow que interesante
  3. 4

    Usted puede llamar a Calendario.getMinimum() para cada tipo de campo (es decir, el año, mes, etc.) y, a continuación, establezca los valores mínimos correspondientes a los tipos de campo. Esto le daría el mínimo de calendario. No sé si hay una manera más rápida de hacerlo.

  4. 1

    Las otras Respuestas pueden ser correctas, pero el uso anticuado clases.

    java.tiempo

    La antigua fecha y hora de las clases de java.util.Fecha/.Calendario etc.) han sido suplantados por la java.tiempo marco de trabajo basado en Java 8 y versiones posteriores.

    El java.el tiempo de las clases son inspirados por Joda-El Tiempo, definido por JSR 310, extendida por el ThreeTen-proyecto Extra, de nuevo trasladado a Java 6 & 7 por la ThreeTen-Backport proyecto, y adaptado a Android en el ThreeTenABP proyecto. Ver Tutorial.

    Por un momento en la línea de tiempo en UTC con una resolución de nanosegundos, uso Instant. Dado un desplazamiento de UTC, uso OffsetDateTime. Para un la zona horaria (offset + reglas de anomalías), el uso de ZonedDateTime, pero que por su naturaleza no se ha definido min/max, ni ZoneId. Para una fecha de valor solo sin la hora del día y sin tiempo de la zona, el uso de LocalDate. Para un momento del día sólo valor, sin fecha y sin hora de la zona, el uso de LocalTime. Para la fecha-tiempo sin tiempo de la zona, el uso de LocalDateTime.

    Los siguientes son los pre-definido constantes.

    Precaución: Ser cauteloso con el uso de estos valores, como una especie de bandera o un significado especial. Muchas otras bibliotecas de software y bases de datos no puede apoyar a estos valores extremos.

    Por una bandera o un significado especial como un no-null «sin valor», sugiero elegir arbitrariamente el momento, pero evitar ir a tales extremos llega, ya sea hacia adelante o hacia atrás en el tiempo. Quizás el Unix epoch fecha de referencia, el primer momento de la década de 1970 en UTC, 1970-01-01T00:00:00Z. Se define como una constante en Java: Instante.ÉPOCA


    Sobre java.tiempo

    La java.tiempo marco está construido en Java 8 y versiones posteriores. Estas clases suplantar la problemática de edad legado fecha y hora de las clases, tales como java.util.Fecha, Calendario, & SimpleDateFormat.

    La Joda-Time proyecto, ahora en el modo de mantenimiento, asesora de la migración a la java.tiempo clases.

    Para obtener más información, consulte la Oracle Tutorial. Y la búsqueda de Desbordamiento de Pila, hay muchos ejemplos y explicaciones. La especificación es JSR 310.

    Puede intercambiar java.tiempo objetos directamente con la base de datos. El uso de un Controlador JDBC compatible con JDBC 4.2 o más tarde. No hay necesidad para las cadenas, sin necesidad de java.sql.* clases.

    Dónde obtener el java.clases de tiempo?

    La ThreeTen-Extra proyecto se extiende java.tiempo con clases adicionales. Este proyecto es un terreno de prueba para posibles futuras incorporaciones a java.tiempo. Usted puede encontrar algunos de clases útiles aquí como Intervalo, YearWeek, YearQuarter, y más.

Dejar respuesta

Please enter your comment!
Please enter your name here