用add()代替roll(),roll是不会改变比较它大的单位的值的,下面是例子
//#1
Calendar cal=Calendar.getInstance();
cal.set(2000,Calendar.MARCH,1); //2000-03-01
cal.add(Calendar.DATE,-1); //2000-02-29
//#2
Calendar cal=Calendar.getInstance();
cal.set(1999,Calendar.MARCH,1); //1999-03-01
cal.add(Calendar.DATE,-1); //1999-02-28