Search code examples
javadatetimegregorian-calendar

Java GregorianCalendar What am I doing wrong? Wrong date?


Hello I have a problem with GregorianCalendar.

What is wrong in there?

How outcome is 2010/6/1 and not 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));
    }

}

Solution

  • Java counts months from 0, so 5 is June. It's always safer to use the constants. So I would write:

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

    The same applies to your calendar print out. If you do cal.get(Calendar.MONTH) you get 6 meaning JULY.