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

时间:2010-05-31 13:08:48

标签: java date time 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));
    }

}

3 个答案:

答案 0 :(得分:10)

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

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

这同样适用于您的日历打印输出。如果你做cal.get(Calendar.MONTH),那么你将获得6个意思。

答案 1 :(得分:1)

这是因为月号从零开始,因此您尝试设置6月31日,但6月只有30天,因此它将转换为7月1日。

答案 2 :(得分:1)

要添加上述答案,由于6月份没有第31天日历会将其提升到下一个有效日期,因为默认情况下Calendar.setLenient为真。