Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Арифметические операции с датами


Автор: Entry_N3 20.8.2007, 14:09
Есть "22.08.2007"

Прогоняю через
Код

Calendar curCalendar = GregorianCalendar.getInstance();
curCalendar.setTime(<на входе Date>);
curCalendar.add(Calendar.DAY_OF_MONTH, 11);


Желаю увидеть 02.09.2007, а вижу 02.08.2007.

Вопрос: как написать прибавление даты с учетом месяцев, лет?

Смотрел http://forum.vingrad.ru/topic-64255.html, там сказано, что add, должно учитывать изменения в "старших" полях, но на деле в 1.4 у меня не делает.

Автор: _Michael 20.8.2007, 15:02
Вроде работает:
Код

    String dateStr = "21.08.2007 12:14:30";
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss"); 
    Date date = simpleDateFormat.parse(dateStr);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    System.out.println(calendar.get(Calendar.DATE)+" "+calendar.get(Calendar.MONTH));
    
    calendar.setLenient(true);
    calendar.add(Calendar.DATE, 21);
    System.out.println(calendar.get(Calendar.DATE)+" "+calendar.get(Calendar.MONTH));

Консоль:
Код

21 7
11 8


smile

Автор: Entry_N3 20.8.2007, 15:37
Решил.

Автор: AxNe0 20.8.2007, 17:52
а отметку о том, что вопрос решенный кто будет ставить? ;)

Автор: Entry_N3 20.8.2007, 22:17
Перепутал месяцы и минуты. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)