这段代码居然出现2006年2月30日!!!!
import java.util.*;public class test { /**
 * @param args
 */
public static void main(String[] args) { Calendar cl = Calendar.getInstance();
cl.set(2005, 11, 20);
cl.add(cl.DAY_OF_YEAR, 100);
System.out.println(cl.get(cl.YEAR) + "年" + cl.get(cl.MONTH) + "月"
+ cl.get(cl.DAY_OF_MONTH) + "日");
}}//2006年2月30日

解决方案 »

  1.   

    月份是从0开始的,所以cl.set(2005, 11, 20);是2005年12月20日,cl.get(cl.MONTH)得到2,其实应该是三月,三月有30日这一天。
      

  2.   

    月份要加1.你打印如下:
    Calendar cl = Calendar.getInstance();
    cl.set(2005, 11, 20);
    cl.add(cl.DAY_OF_YEAR, 20);
    System.out.println(cl.get(cl.YEAR) + "年" + cl.get(cl.MONTH) + "月"
    + cl.get(cl.DAY_OF_MONTH) + "日");
    //输出:2006年0月9日  说明是月份是从0开始的
      

  3.   

    import java.util.Calendar;public class Test1 {
    public static void main(String args[]){
    Calendar cal = Calendar.getInstance();
    cal.set(2005,11,20);
    cal.add(Calendar.DAY_OF_YEAR,100);
    System.out.println(cal.get(Calendar.YEAR)+"年"
                       +(cal.get(Calendar.MONTH)+1)+"月"
                       +cal.get(Calendar.DAY_OF_MONTH)+"日");
    }
    }月份是从0开始的,所以要加1