因最近在写代码的时候遇到了获取上个月月份的问题YYYYMM这个格式,根据给的工具类,获取出来的值是有问题的,所以记录以下。
问题方法
/**
* 获取上个月的月份
* 该方法有问题 三月份的29 30 31 有bug
* @return
*/
public static final String getLastMonth() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
Date date = new Date();
Calendar calendar = Calendar.getInstance();
// 设置为当前时间
calendar.setTime(date);
// 设置为上一个月
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
date = calendar.getTime();
return format.format(date);
}
正确的方法
/**
* 获取上个月月份
* @return
*/
public static final String getLastMonth() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
Date date = new Date();
Calendar calendar = Calendar.getInstance();
// 设置为当前时间
calendar.setTime(date);
calendar.add(Calendar.MONTH,-1);
// 设置为上一个月
//calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
date = calendar.getTime();
return format.format(date);
}
博客讨论了在编程中遇到的一个问题,即如何正确获取上个月的日期,特别是对于三月份的情况。作者指出,使用`Calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1)`方法存在错误,并提供了修正后的代码,使用`calendar.add(Calendar.MONTH, -1)`来正确获取上个月的月份。这个修正避免了在处理特定月份时的bug。

654

被折叠的 条评论
为什么被折叠?



