Pregunta

Hola tengo un problema con GregorianCalendar.

Lo que está mal allí?

Como resultado es 06/01/2010 y no 2010/05/31?

package test;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Main {

    public static void main(String[] args) {
        Calendar cal = new GregorianCalendar(2010, 5, 31);
        System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH));
    }

}
¿Fue útil?

Solución

Java cuenta desde 0 meses, por lo que 5 es junio. Siempre es más seguro utilizar las constantes. Así que me gustaría escribir:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);

Lo mismo se aplica a su calendario de impresión a cabo. Si lo hace cal.get(Calendar.MONTH) se obtiene 6 significando julio.

Otros consejos

Esto se debe a varios meses está basado en cero, por lo que están tratando de establecer 31o de junio, pero junio es de sólo 30 días, por lo que se convierte al 1 de julio.

toadd a lo que las respuestas anteriores, ya que no hay día 31 de junio, el Calendario promueve al siguiente día válido porque Calendar.setLenient es cierto de forma predeterminada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top