Frage

Hallo, ich habe ein Problem mit GregorianCalendar.

Was falsch ist da drin?

Wie Ergebnis ist 2010.06.01 und nicht 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));
    }

}
War es hilfreich?

Lösung

Java zählt Monate ab 0, so 5 Juni. Es ist immer sicherer, die Konstanten zu verwenden. Also ich würde schreiben:

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

Das gleiche gilt für Ihren Kalender ausdrucken. Wenn Sie cal.get(Calendar.MONTH) tun erhalten Sie 6 Juli Bedeutung.

Andere Tipps

Das ist, weil Monat Zahl Null-basiert, so dass Sie Satz 31. Juni versuchen, aber Juni ist nur 30 Tage, so dass es bis 1. Juli umgesetzt wird.

TOADD, was die oben genannten Antworten, da es keinen 31. Tag im Juni ist der Kalender es auf den nächsten gültigen Tag fördert, weil Calendar.setLenient gilt standardmäßig aktiviert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top