Календарь пропускает 31 августа в действии (Calendar.DATE, false)

1

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

1 ответ

3
Лучший ответ

Он не идет в предыдущий месяц. Он остается в том же месяце (проверьте поле месяца самостоятельно). Он просто меняет день месяца. Вы хотите использовать 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);
  • 0
    Вы были правы, и ваше решение исправило это, я даже не заметил, что месяц не изменился, спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню