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

时间:2012-10-10 07:50:25

标签: java calendar java-time

如何在java中找出上个月及其年份

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

9 个答案:

答案 0 :(得分:54)

您的解决方案是here,但您需要使用减法

而不是添加
c.add(Calendar.MONTH, -1);

然后,您可以在Calendar上致电getter以获取正确的字段

int month = c.get(Calendar.MONTH) + 1; // beware of month indexing from zero
int year  = c.get(Calendar.YEAR);

答案 1 :(得分:14)

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

答案 2 :(得分:10)

使用Joda Time Library。使用它可以很容易地处理日期,时间,日历和语言环境,它将在版本8中集成到Java中。

DateTime#minusMonths方法可以帮助您上个月。

DateTime month = new DateTime().minusMonths (1); 

答案 3 :(得分:8)

最简单的&最不容易出错的方法是...使用Calendar的roll()方法。像这样:

    c.roll(Calendar.MONTH, false);

roll方法采用布尔值,这基本上意味着将月份向上滚动(true)或向下滚动(false)?

答案 4 :(得分:8)

您可以使用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 :(得分:2)

你需要知道月份是零,所以当你执行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);

答案 6 :(得分:1)

<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://www.example.org/File" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/File File.xsd ">
  <Text>Test</Text>
</Help>

答案 7 :(得分:1)

YearMonth

您可以使用 java.time.YearMonth 类及其 minusMonths 方法。

YearMonth lastMonth = YearMonth.now().minusMonths(1);

调用 toString 为您提供标准 ISO 8601 格式的输出:yyyy-mm

您可以访问部分、年份和月份。您可以选择使用 Month 枚举对象,或仅使用 int 值 1-12 表示月份。

int year = lastMonth.getYear() ;
int month = lastMonth.getMonthValue() ;
Month monthEnum = lastMonth.getMonth() ;

答案 8 :(得分:-2)

这是代码段。我认为它有用。

      Calendar cal = Calendar.getInstance();
      SimpleDateFormat simpleMonth=new SimpleDateFormat("MMMM YYYY");
      cal.add(Calendar.MONTH, -1);
      System.out.println(simpleMonth.format(prevcal.getTime()));