Java Calendar类add方法在第一次调用时增加零?

时间:2012-09-27 02:16:01

标签: java

当向Calendar对象添加1年时,第一次迭代会增加零年,即使它应该添加1.每个后续调用都会增加1年。例如:

calendarObject.add(Calendar.YEAR,1); //This actually adds nothing    
calendarObject.add(Calendar.YEAR,1); // now it works.

注意: calendarObject已设置为1995年,没有设置其他属性。

2 个答案:

答案 0 :(得分:2)

它运作正常。

import java.util.Calendar;


public class CalTest
{
    public static void main(String[] args)
    {
        Calendar cal = Calendar.getInstance();

        cal.set(Calendar.YEAR, 1995);
        System.out.println(cal.get(Calendar.YEAR));

        cal.add(Calendar.YEAR, 1);
        System.out.println(cal.get(Calendar.YEAR));

        cal.add(Calendar.YEAR, 1);
        System.out.println(cal.get(Calendar.YEAR));
    }
}

输出:

1995
1996
1997

答案 1 :(得分:1)

注意是问题的根源。除了年份之外,您还需要设置更多日历属性。 Vikdor的示例有效,因为他使用的是返回的默认Calendar实例,其中填写了所有类成员。仅指定“1995”将导致奇怪的行为。