Java 日期月份处理小工具类
再sql
的月份和日期查询中,可能会需要将日期或者月份相应推迟/提前一天或一段时间,当然,这个逻辑放在sql
中也是可以的,具体还是要看需求是否合适。分享三个小方法,一个是计算月份差、日期加减一/多天、月份加减一/多天
月份差
输入参数:
startMonth
- 字符串,格式应该为
yyyy-MM
对应下面SimpleDateFormat("yyyy-MM");
可根据需要更改格式
endMonth
- 字符串,格式应该为
yyyy-MM
对应下面SimpleDateFormat("yyyy-MM");
可根据需要更改格式
返回值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| public int getMonthDiff(String startMonth, String endMonth) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); Date start = null; Date end = null; try { start = dateFormat.parse(startMonth); end = dateFormat.parse(endMonth); } catch (ParseException e) { e.printStackTrace(); } Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c1.setTime(start); c2.setTime(end); int year1 = c1.get(Calendar.YEAR); int year2 = c2.get(Calendar.YEAR); int month1 = c1.get(Calendar.MONTH); int month2 = c2.get(Calendar.MONTH); int day1 = c1.get(Calendar.DAY_OF_MONTH); int day2 = c2.get(Calendar.DAY_OF_MONTH); int yearInterval = year1 - year2; if (month1 < month2 || month1 == month2 && day1 < day2) { yearInterval--; } int monthInterval = (month1 + 12) - month2; if (day1 < day2) { monthInterval--; } monthInterval %= 12; int monthsDiff = Math.abs(yearInterval * 12 + monthInterval); return monthsDiff; }
|
日期加减
输入参数:
day
- 字符串,日期,格式应该为
yyyy-MM-dd
对应下面SimpleDateFormat("yyyy-MM-dd");
可根据需要更改格式
num
返回值
- date
- String,格式处理后的时间,如3月1-3月4 返回3
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private String dayFormat(String day, int num) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = dateFormat.parse(day); } catch (ParseException e) { e.printStackTrace(); } Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DATE,num); date = c.getTime(); return dateFormat.format(date); }
|
月份加减
输入参数:
day
- 字符串,日期,格式应该为
yyyy-MM
对应下面SimpleDateFormat("yyyy-MM");
可根据需要更改格式
num
返回值
- date
- String,格式处理后的时间,如3月-6月 返回3
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private String monthFormat(String month, int num) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); Date date = null; try { date = dateFormat.parse(month); } catch (ParseException e) { e.printStackTrace(); } Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.MONTH,num); date = c.getTime(); return dateFormat.format(date); }
|
小结
最近太水了,已经托更一周了,这次又是水了一篇,争取下次好好写一篇