我一直试图使用Simpledateformat获取当月的过去12个月的值。但是对于上个月(即2015年12月),我总是在2016年12月。
calendar.set(Calendar.MONTH,-1); 这应该是2015年12月,但不是。
我不明白逻辑。请有人解释一下。非常感谢您的时间和帮助。
我的代码:
public static void main (String[] args) throws java.lang.Exception
{
SimpleDateFormat month_date = new SimpleDateFormat("MMM-YYYY");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, -1);
String month_name = month_date.format(calendar.getTime());
System.out.println("month_name : "+month_name);
}
输出:
month_name : Dec-2016
答案 0 :(得分:2)
对于几个月来你可以这样做:
calendar.add(Calendar.MONTH, -1);
希望它对你有所帮助。
答案 1 :(得分:1)
代码存在一些问题。
1)您应该使用添加calendar.add(Calendar.MONTH, -1);
来减去月份。
2)有趣的是,在此之后它会将输出打印为month_name : Dec-2016
,这是因为您的SimpleDateFormat
存在问题,即您已将年份称为资本Y
,即Week year
1}}将其更改为y
即可完成任务。
您可以参考SimpleDateFormat
文档here.
修改后的代码为:
public static void main (String[] args) throws java.lang.Exception
{
SimpleDateFormat month_date = new SimpleDateFormat("MMM-yyyy");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
String month_name = month_date.format(calendar.getTime());
System.out.println("month_name : "+month_name);
}