本帖最后由 iamnotahacker 于 2009-08-01 11:45:13 编辑

解决方案 »

  1.   

    我认为这个问题在 Calendar#roll 的 API DOC 上面已经说得很清楚了!如果想减 1 天变成 1 月 31 号,就使用 add(Calendar.DATE, -1);
      

  2.   

    roll
    public void roll(int field,
                     int amount)向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。负的时间量意味着向下滚动。 
    注:Calendar 上的此默认实现只是重复地调用滚动一个单元的 roll() 版本。这可能并非总是正确的。例如,如果 DAY_OF_MONTH 字段为 31,则在 February 的范围内滚动会将它设置为 28。此函数的 GregorianCalendar 版本会小心地处理这个问题。其他子类还应该提供此函数的重写版本,以正确实现该功能。 
      

  3.   

    我也看了下API,不过有时看不大懂,试了下GregorianCalendar
    也不行。以后用ADD就是了。
    谢谢人们