Как получить предыдущие месяц и годы в java?
Как узнать последний месяц и его год в java
например, если сегодня 10 октября 2012 года, результат должен быть месяц = 9 и Год = 2012, Если сегодня 10 января 2013 года, результат должен быть месяц = 12 Год = 2012
9 ответов
java.время
используя 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
использовать Библиотека Времени Joda. С ним очень легко обрабатывать дату, время, календарь и локаль, и он будет интегрирован в java в версии 8.
DateTime#minusMonths
метод поможет вам получить предыдущий месяц.
DateTime month = new DateTime().minusMonths (1);
для этого можно использовать класс 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
самый простой и наименее подверженный ошибкам подход... Используйте метод roll () календаря. Вот так:
c.roll(Calendar.MONTH, false);
метод roll принимает логическое значение, что в основном означает свертывание месяца вверх(true) или вниз (false)?
вы должны знать, что месяц равен нулю, поэтому, когда вы делаете getMonth, вам нужно будет добавить 1. В приведенном ниже примере мы должны добавить к 1 января, а 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);
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);
}
Я думаю, это сработает.. :)
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
System.out.println("Current date : " + (now.get(Calendar.MONTH) + 1) + "-"
+ now.get(Calendar.DATE) + "-" + now.get(Calendar.YEAR)); //Current Date
now = Calendar.getInstance();
now.add(Calendar.MONTH, -1); // Decrement Month by 1
if((now.get(Calendar.MONTH) + 1)==0){ //Checks if Month is January and Decrements Year by 1 and increments Month by 11
now.add(Calendar.MONTH, 11);
now.add(Calendar.YEAR, -1);
}
System.out.println("date before 1 months : " + (now.get(Calendar.MONTH) + 1) + "-"
+ now.get(Calendar.DATE) + "-" + now.get(Calendar.YEAR)); // Drecemented Date
}
}
вот фрагмент кода.Я думаю, это работает.
Calendar cal = Calendar.getInstance();
SimpleDateFormat simpleMonth=new SimpleDateFormat("MMMM YYYY");
cal.add(Calendar.MONTH, -1);
System.out.println(simpleMonth.format(prevcal.getTime()));