Как уменьшить один месяц от текущей даты и хранится в переменной даты с помощью Java?
Как сократить один месяц с текущей даты и хотите болеть в java.util.Date
Я использую этот код, но он показывает ошибку во 2-й строке
java.util.Date da = new Date();
da.add(Calendar.MONTH, -1); //error
Как сохранить эту дату в java.util.Date
переменная?
8 ответов
Использовать календарь:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
Начиная с Java 8, предлагается использовать API Date-Time вместо Calendar
,
Если вы хотите Date
возвращаемый объект:
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
Если вам не нужен именно Date
Объект, вы можете использовать классы напрямую, предоставленные пакетом, даже для получения дат в других часовых поясах:
ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);
Calendar calNow = Calendar.getInstance()
// adding -1 month
calNow.add(Calendar.MONTH, -1);
// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
Использование нового пакета java.time в Java8 и Java9
import java.time.LocalDate;
LocalDate mydate = LocalDate.now(); // Or whatever you want
mydate = mydate.minusMonths(1);
Преимущество использования этого метода состоит в том, что вы избегаете всех проблем, связанных с изменением продолжительности месяца, и имеете большую гибкость в настройке дат и диапазонов. Локальная часть также работает с часовыми поясами, поэтому их легко конвертировать.
Кроме того, используя java.time, вы также можете получить день недели, день месяца, все дни до последнего месяца, все дни до определенного дня недели и т. Д.
mydate.plusMonths(1);
mydate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).getDayOfMonth();
mydate.with(TemporalAdjusters.lastDayOfMonth());
Ты можешь использовать Calendar
java.util.Date da = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(da);
cal.add(Calendar.MONTH, -1);
da = cal.getTime();
Вы также можете использовать DateUtils из apache common. Библиотека также поддерживает добавление часов, минут и т. д.
Date date = DateUtils.addMonths(new Date(), -1)
Увеличить 1 месяц JDF
Date dateTo = new SimpleDateFormat("yyyy/MM/dd").parse(jdfMeTo.getJulianDate());
Calendar cal = Calendar.getInstance();
cal.setTime(dateTo);
cal.add(Calendar.MONTH, -1);
Date dateOf = cal.getTime();
Log.i("dateOf", dateOf.getTime() + "");
jdfMeOf.setJulianDate(cal.get(Calendar.DAY_OF_YEAR), cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));