Как получить предыдущий месяц и годы в java?
Как узнать последний месяц и год в java
например. Если сегодня 10-й октябрь 2012 года, результат должен быть месяц = 9 и год = 2012,
Если сегодня 10-й янв 2013, результат должен быть месяц = 12 и год = 2012
Ответы
Ответ 1
Ваше решение здесь, но вместо добавления вам нужно использовать вычитание
c.add(Calendar.MONTH, -1);
Затем вы можете вызвать getter в Calendar
для получения правильных полей
int month = c.get(Calendar.MONTH) + 1; // beware of month indexing from zero
int year = c.get(Calendar.YEAR);
Ответ 2
Самый простой и наименее подверженный ошибкам подход... Используйте метод календаря(). Вот так:
c.roll(Calendar.MONTH, false);
метод roll принимает значение boolean, которое в основном означает roll the month up (true) или down (false)?
Ответ 3
Используйте Joda Time Library. С ним очень легко обрабатывать дату, время, календарь и локаль, и он будет интегрирован в java в версии 8.
DateTime#minusMonths
метод поможет вам получить предыдущий месяц.
DateTime month = new DateTime().minusMonths (1);
Ответ 4
вы можете использовать класс Calendar для этого:
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
System.out.println(format.format(cal.getTime()));
Отпечатки: 2012.09.10 11:01
для фактической даты 2012.10.10 11:01
Ответ 5
java.time
Использование рамки java.time
, встроенной в Java 8:
import java.time.LocalDate;
LocalDate now = LocalDate.now(); // 2015-11-24
LocalDate earlier = now.minusMonths(1); // 2015-10-24
earlier.getMonth(); // java.time.Month = OCTOBER
earlier.getMonth.getValue(); // 10
earlier.getYear(); // 2015
Ответ 6
Вам нужно знать, что месяц равен нулю, поэтому, когда вы делаете getMonth, вам нужно добавить 1. В приведенном ниже примере мы должны добавить 1 к Januaray как 1, а не 0
Calendar c = Calendar.getInstance();
c.set(2011, 2, 1);
c.add(Calendar.MONTH, -1);
int month = c.get(Calendar.MONTH) + 1;
assertEquals(1, month);
Ответ 7
private static String getPreviousMonthDate(Date date){
final SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DATE, -1);
Date preMonthDate = cal.getTime();
return format.format(preMonthDate);
}
private static String getPreToPreMonthDate(Date date){
final SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH,1);
cal.add(Calendar.DATE, -1);
Date preToPreMonthDate = cal.getTime();
return format.format(preToPreMonthDate);
}