Ответ 1
Использовать Календарь:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
Как уменьшить один месяц с текущей даты и хотите пережить в переменной java.util.Date
im, используя этот код, но он показывает ошибку во 2-й строке
java.util.Date da = new Date();
da.add(Calendar.MONTH, -1); //error
Как сохранить эту дату в переменной java.util.Date
?
Использовать Календарь:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
Calendar calNow = Calendar.getInstance()
// adding -1 month
calNow.add(Calendar.MONTH, -1);
// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
Использование JodaTime:
Date date = new DateTime().minusMonths(1).toDate();
JodaTime предоставляет удобный API для управления датами.
Обратите внимание, что аналогичный API дат будет представлен в JDK8 с JSR310.
вы можете использовать Calendar
java.util.Date da = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(da);
cal.add(Calendar.MONTH, -1);
da = cal.getTime();
Начиная с Java 8, предлагаемый способ заключается в использовании API-интерфейса по дате вместо Calendar
.
Если вы хотите вернуть объект Date
:
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
Если вам не нужен именно объект Date
, вы можете напрямую использовать классы, предоставляемые пакетом, даже для получения дат в других часовых поясах:
ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);