Java 日历在滚动时跳过8月31日(Calendar.DATE,false)

Java 日历在滚动时跳过8月31日(Calendar.DATE,false),java,android,calendar,Java,Android,Calendar,我有一个程序,可以根据当天显示信息。到今天为止一切都很顺利。由于某种原因,当日历向后滚动一天以获得昨天的日期时,它会直接转到8月30日。它跳过了8月31日。它将抓住今天的日期(9月1日),但当我追踪它时,它正好超过31日。有人建议我做错了什么,或者有更好的方法吗?这是我的密码 Calendar date2; date2 = Calendar.getInstance(); mday1 = date2.get(Calendar.DATE); date2.roll(Ca

我有一个程序,可以根据当天显示信息。到今天为止一切都很顺利。由于某种原因,当日历向后滚动一天以获得昨天的日期时,它会直接转到8月30日。它跳过了8月31日。它将抓住今天的日期(9月1日),但当我追踪它时,它正好超过31日。有人建议我做错了什么,或者有更好的方法吗?这是我的密码

    Calendar date2;
    date2 = Calendar.getInstance();
    mday1 = date2.get(Calendar.DATE);
    date2.roll(Calendar.DATE, false);  //rolls back the date by one day
    mday2 = date2.get(Calendar.DATE);

和上个月不一样。它保持在同一个月(自己检查月份字段)。它只是改变了一个月的哪一天。您希望使用负值来代替

Calendar date2;
date2 = Calendar.getInstance();
mday1 = date2.get(Calendar.DATE);
date2.add(Calendar.DATE, -1);  //rolls back the date by one day
mday2 = date2.get(Calendar.DATE);

你是对的,你的解决方案解决了它,我甚至没有注意到月份没有变化,谢谢:)