2014-03-20 7 views
1

В сценарии я хочу откат в один день с текущего времени. Он отлично работает, когда я использую функцию Calendar.roll(), но когда дело доходит до 2014-1-1 00:00, представляется неожиданным результатом. вот код:java roll назад один день

Calendar c = Calendar.getInstance(); 
try { 
    c.setTimeInMillis(sdf.parse("2014-1-1 00:00").getTime()); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
c.roll(Calendar.DAY_OF_YEAR, -1); 
c1.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), 0, 0, 0); 

System.out.println (sdf.format (c1.getTime()));

результат: 2014-12-31 00:00

, если я использую Calendar.DAY_OF_MONTH вместо DAY_OF_YEAR, результат будет 2014-01-31 00:00

Кто-нибудь есть решение при откате в один день также откатывает год, для этого примера, с 2014 по 2013 год?

+0

Вы пробовали 'c.add (Calendar.DAY_OF_YEAR, -1)'? – MadProgrammer

+0

Возможный дубликат [Получить вчерашнюю дату с использованием даты] (http://stackoverflow.com/questions/11425236/get-yesterdays-date-using-date) –

ответ

0

Попробуйте использовать метод добавления вместо.

c.add(Calendar.DAY_OF_YEAR, -1); 
Смежные вопросы