如何在java中找出上个月及其年份
e.g。如果今天是2012年10月10日,结果应该是Month = 9和year = 2012, 如果今天是2013年1月10日,结果应该是月= 12和年= 2012
答案 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 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()));