В сценарии я хочу откат в один день с текущего времени. Он отлично работает, когда я использую функцию 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 год?
Вы пробовали 'c.add (Calendar.DAY_OF_YEAR, -1)'? – MadProgrammer
Возможный дубликат [Получить вчерашнюю дату с использованием даты] (http://stackoverflow.com/questions/11425236/get-yesterdays-date-using-date) –