Java GregorianCalendar我做错了什么?错误的约会?

pas*_*una 6 java time date gregorian-calendar

您好GregorianCalendar有问题.

有什么问题?

结果是2010/6/1而不是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));
    }

}
Run Code Online (Sandbox Code Playgroud)

Grz*_*zki 10

Java从0开始计算数月,因此5是6月.使用常量总是更安全.所以我会写:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);
Run Code Online (Sandbox Code Playgroud)

这同样适用于您的日历打印输出.如果你这样做,cal.get(Calendar.MONTH)你就会得到7个意思.