如何在java中找出上个月和它的年份
例如如果今天是2012年10月10日,结果应该是Month = 9和year = 2012,如果今天是2013年1月10日,结果应该是Month = 12和year = 2012
使用Java 8中内置的java.time
框架:
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 Time Library。使用它可以很容易地处理日期,时间,日历和语言环境,它将在版本8中集成到Java中。
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
最简单且最不容易出错的方法是...使用Calendar roll()方法。像这样:
c.roll(Calendar.MONTH, false);
roll方法采用布尔值,这基本上意味着将月份向上滚动(true)或向下滚动(false)?
你需要知道月份是零,所以当你执行getMonth时,你需要添加1.在下面的例子中,我们必须将Januaray的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);
}
这是代码片段。我认为它有效。
Calendar cal = Calendar.getInstance();
SimpleDateFormat simpleMonth=new SimpleDateFormat("MMMM YYYY");
cal.add(Calendar.MONTH, -1);
System.out.println(simpleMonth.format(prevcal.getTime()));