大家好,又见面了,我是你们的朋友全栈君。
上代码:
public static void main(String[] args) throws Exception{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(simpleDateFormat.parse("2021-08"));
calendar.roll(Calendar.MONTH, -5);
String date = simpleDateFormat.format(calendar.getTime());
System.out.println("-------------" + date + "-------------");
}
运行结果
-------------2021-03-------------
可以看到,减去5个月得到的日期是没有问题的,但是减去超过一年时就有问题了,再试试减20个月
public static void main(String[] args) throws Exception{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(simpleDateFormat.parse("2021-08"));
calendar.roll(Calendar.MONTH, -20);
String date = simpleDateFormat.format(calendar.getTime());
System.out.println("-------------" + date + "-------------");
}
运行结果
-------------2021-12-------------
日期不对了,正确日期应该是:2019-12
解决办法:将roll方法换成add,roll方法只能在当前年进行计算,add方法可以进行跨年计算
public static void main(String[] args) throws Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(simpleDateFormat.parse("2021-08"));
calendar.add(Calendar.MONTH, -20);
String date = simpleDateFormat.format(calendar.getTime());
System.out.println("-------------" + date + "-------------");
}
运行结果
-------------2019-12-------------
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130265.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...