如何在java中获得前一个月和几年?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在java中获得前一个月和几年?相关的知识,希望对你有一定的参考价值。

如何在java中找出上个月和它的年份

例如如果今天是2012年10月10日,结果应该是Month = 9和year = 2012,如果今天是2013年1月10日,结果应该是Month = 12和year = 2012

答案

你的解决方案是here,但你需要使用减法而不是添加

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);
另一答案

java.time

使用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()));

以上是关于如何在java中获得前一个月和几年?的主要内容,如果未能解决你的问题,请参考以下文章

如何从现在开始使用Java减去30天,3个月和1年的时间?

仅在几个月和几天计算时差

一个时间插件是如何做到前几个月和后个几月的设置

在日期时间对象python中搜索

浏览器兼容对网站有哪些重要作用

使用导航控制器按下后退按钮后如何防止前一个片段显示?