公司做的项目要求选择日期可以选择上一个月的,很简单,但是涉及到临界日期,例如跨年
直接的问题从2019.1.1往前一个月那就不简单了,于是找到相关方法自己尝试下。理解出了两个往前一年的区别
看下图:
方法一:
方法二:
上代码:
//方法一:往前一年就是365天,往前一个月就是30天
c.add(Calendar.MONTH, -1);
//方法二:往前一年就是2019年直接更改为2018天,往前一个月就是1月直接改为12月
if (c.get(Calendar.MONTH) == 0) {
//如果当前月份为1月份,那么应该年份往前推一年,例如2019.1.21,往前一个月应该是2018.12.21,所以年份也得减一
c.roll(Calendar.YEAR, false);
c.roll(Calendar.MONTH, false);
} else {
c.roll(Calendar.MONTH, false);
}
如上面代码所示:
方法有两种:
方法一是仅仅往前数365天一年整(一个月30天),而方法二则是仅仅年份数据的变化类似于2019直接改为2018,类似于日历往前翻一个月,往前翻一年(12个月)
感谢博主提供第二种方法: