最近在工作中经常碰到处理日期的情况,为实现需求写了一些函数,总结如下:
/**
* 月份相加
* @param dateStr日期字符串,格式yyyyMMddHHmmss
* @param m,月数,整数表示m月之后的月份,负数表示m月之前的月份
* @param dtfmt 日期格式
* @return 月份相加的结果
* */
public static String MonthOperation(String dateStr,int m,String dtfmt){
try{
SimpleDateFormat myFormatter = new SimpleDateFormat(dtfmt);
Date mydate= myFormatter.parse(dateStr);
Calendar cal=Calendar.getInstance();
cal.setTime(mydate);
cal.add(Calendar.MONTH, m);
return myFormatter.format(cal.getTime());
} catch(Exception e){
e.printStackTrace();
return "";
}
}
测试结果:
//月份相加
String dt ="2009-08-05";
int m = 3;
String res = MonthOperation(dt,m,"yyyy-MM-dd");
putln("当前时间:"+dt + " " +m + "个月之后的时间:" + res);
输出结果:
当前时间:2009-08-05 3个月之钱的时间:2009-11-05
//月份相减
String dt ="2009-08-05";
int m = -3;
String res = MonthOperation(dt,m,"yyyy-MM");
putln("当前时间:"+dt + " " +m + "个月之前的时间:" + res);
输出结果:
当前时间:2009-08-05 3个月之钱的时间:2009-05-05