Календарь пропускает 31 августа в действии (Calendar.DATE, false) - PullRequest
1 голос
/ 02 сентября 2010

У меня есть программа, которая отображает информацию в зависимости от дня. До сегодняшнего дня все работало нормально. по какой-то причине, когда календарь откатывается на один день, чтобы получить вчерашнюю дату, он идет прямо к 30 августа. он пропускает 31 августа. Это будет хорошо для сегодняшней даты (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);

1 Ответ

3 голосов
/ 02 сентября 2010

Это не относится к предыдущему месяцу. Это остается в том же месяце (проверьте поле месяца самостоятельно). Это просто меняет день месяца. Вы хотите использовать Calendar#add() вместо отрицательного значения.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...