无法设置GregorianCalendar月份和日期

时间:2016-03-20 05:02:21

标签: java calendar gregorian-calendar

我试图设置阳历的月份和日期:

GregorianCalendar startCalendar = new GregorianCalendar();

startCalendar.set(GregorianCalendar.MONTH, 3);
System.out.println(startCalendar.MONTH);
startCalendar.set(GregorianCalendar.DATE, 9);
System.out.println(startCalendar.DATE);

输出结果为:

2
5

我使用哪个数字似乎没关系(即,如果我替换3和9),它总是具有相同的输出

2 个答案:

答案 0 :(得分:3)

参考文献:

MONTHDATE是字段编号,不是字段的实际值。您应该使用get()方法来设置数字。

GregorianCalendar startCalendar = new GregorianCalendar();

startCalendar.set(GregorianCalendar.MONTH, 3);
System.out.println(startCalendar.get(GregorianCalendar.MONTH));
startCalendar.set(GregorianCalendar.DATE, 9);
System.out.println(startCalendar.get(GregorianCalendar.DATE));

答案 1 :(得分:0)

startCalendar.MONTHCalendar.MONTH相同,并且declared类中的静态字段Calendar为:

public final static int MONTH = 2;

要从日历中获取月份,您需要致电get()

startCalendar.get(Calendar.MONTH)

请注意,您应该始终通过实际类来声明静态字段(例如Calendar.MONTH),而不是通过引用变量(例如startCalendar.MONTH)来限定静态字段,并且永远不要通过子类来限定静态字段(例如GregorianCalendar.MONTH)。

所以,你的代码应该是:

GregorianCalendar startCalendar = new GregorianCalendar();

startCalendar.set(Calendar.MONTH, 3);
System.out.println(startCalendar.get(Calendar.MONTH));
startCalendar.set(Calendar.DATE, 9);
System.out.println(startCalendar.get(Calendar.DATE));