Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

}
like image 596
pasuna Avatar asked May 31 '10 13:05

pasuna


2 Answers

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.

like image 95
Grzegorz Oledzki Avatar answered Nov 03 '22 02:11

Grzegorz Oledzki


This is because month number is zero-based, so you are trying to set 31st of June, but June is only 30 days, so it gets converted to 1st of July.

like image 28
unbeli Avatar answered Nov 03 '22 02:11

unbeli