关于Calendar的使用,谁能教教我?

Calendar objCalendar=Calendar.getInstance();
objCalendar.set(2001,2,1);
objCalendar.add(Calendar.MONTH,-1);
objCalendar.add(Calendar.DAY_OF_MONTH,28);
1、为什么当注释掉objCalendar.add(Calendar.MONTH,-1);后得2001-03-292、不注释掉得2001-03-01
请详细回答 objCalendar.add(Calendar.MONTH,-1); 为什么加这句?而且加了后能得到正确的日期
为什么我直接加objCalendar.add(Calendar.DAY_OF_MONTH,28);会到2001-03-01呢?我输入的是2001-02-01阿只要在这个日期上加28不就行了么?能解释一下原因吗?

不好意思,小弟是个菜鸟,还有些疑问想请教
为什么objCalendar.set(2001,2,1); 之后的日期是2001-3-1,我设置的日期就是2001-02-01啊,为什么加的时候要在2001-03-01上加呢?

objCalendar.add(Calendar.MONTH,-1); 的作用就是月份减1。Calendar的月份是0-11的,因此objCalendar.set(2001,2,1); 之后的日期是2001-3-1,此时直接加上28天就是2001-03-29,如果加上objCalendar.add(Calendar.MONTH,-1); 月份减1,日期就变成了2001-2-1,此时加上28天就是2001-03-01!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-06
public static final int MONTH指示月份的 get 和 set 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。
第2个回答  2009-05-06
-1代表减去一个月
第3个回答  2009-05-06
先看看加System.out.println的结果.
import java.util.Calendar;

public class TestCalendar{
public static void main(String args[]){
Calendar objCalendar = Calendar.getInstance();
objCalendar.set(2001,2,1);
System.out.println(objCalendar.getTime());
objCalendar.add(Calendar.MONTH,-1);
System.out.println(objCalendar.getTime());
objCalendar.add(Calendar.DAY_OF_MONTH,28);
System.out.println(objCalendar.getTime());
}
}
注意objCalendar.set(2001,FEBRUARY,1)是合适的写法.
不鼓励:objCalendar.set(2001,2,1);
相似回答