您好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));
}
}
答案 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为真。