문제

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

}
도움이 되었습니까?

해결책

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.

다른 팁

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.

Toadd to what the above answers, since there is no 31st day in June the Calendar promotes it to the next valid day because Calendar.setLenient is true by default.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top