封装的一个计算日期的类_DateCalculate.java package com.stat; import java.util.Calendar; public class DateCalculate { //获得当前日期与本周一相差的天数 public static int getMondayPlus(Calendar cCurrent) { int dayOfWeek = cCurrent.get(Calendar.DAY_OF_WEEK); if (dayOfWeek == 1) { return -6; } else { return 2 - dayOfWeek; } } // 获得本周星期一的日期 public static Calendar getCurrentMonday(Calendar cCurrent) { Calendar cMonday = Calendar.getInstance(); int mondayPlus = getMondayPlus(cCurrent); cMonday.set(cCurrent.get(Calendar.YEAR), cCurrent.get(Calendar.MONTH), cCurrent.get(Calendar.DAY_OF_MONTH)); cMonday.add(Calendar.DAY_OF_MONTH, mondayPlus); return cMonday; } //获得本周星期日的日期 public static Calendar getCurrentSunday(Calendar cMonday) { Calendar cSunday = Calendar.getInstance(); cSunday.set(cMonday.get(Calendar.YEAR), cMonday.get(Calendar.MONTH), cMonday.get(Calendar.DAY_OF_MONTH)); cSunday.add(Calendar.DAY_OF_MONTH, 6);//获取周日日期 周一+6天 return cSunday; } // 获得本月第一天的日期 public static Calendar getFirstDayofMonth(Calendar cCurrent) { Calendar cFirstDay = Calendar.getInstance(); cFirstDay.set(cCurrent.get(Calendar.YEAR), cCurrent.get(Calendar.MONTH), cCurrent.get(Calendar.DAY_OF_MONTH)); cFirstDay.set(Calendar.DAY_OF_MONTH, 1);//获取本月第一天 return cFirstDay; } // 获得本月最后一天的日期 public static Calendar getLastDayofMonth(Calendar cFirstDay) { Calendar cLast = Calendar.getInstance(); cLast.set(cFirstDay.get(Calendar.YEAR), cFirstDay.get(Calendar.MONTH), cFirstDay.get(Calendar.DAY_OF_MONTH)); cLast.add(Calendar.MONTH, 1); //本月第一天加上1月 cLast.add(Calendar.DAY_OF_MONTH, -1); //减去1天,得到本月的最后一天 return cLast; } // 获得本月第一天的日期 public static Calendar getFirstDayofYear(Calendar cCurrent) { Calendar cFirstDay = Calendar.getInstance(); cFirstDay.set(cCurrent.get(Calendar.YEAR), cCurrent.get(Calendar.MONTH), cCurrent.get(Calendar.DAY_OF_MONTH)); cFirstDay.set(Calendar.DAY_OF_YEAR, 1);//获取本年第一天 return cFirstDay; } // 获得本月最后一天的日期 public static Calendar getLastDayofYear(Calendar cFirstDay) { Calendar cLast = Calendar.getInstance(); cLast.set(cFirstDay.get(Calendar.YEAR), cFirstDay.get(Calendar.MONTH), cFirstDay.get(Calendar.DAY_OF_MONTH)); cLast.add(Calendar.YEAR, 1); //本年第一天加上1年 cLast.add(Calendar.DAY_OF_YEAR, -1); //减去1天,得到本年的最后一天 return cLast; } //获取两个日期相隔的天数 public static int getBetweenDays(long lFrom,long lTo) { Calendar cFrom = Calendar.getInstance(); cFrom.setTimeInMillis(lFrom); Calendar cTo = Calendar.getInstance(); cTo.setTimeInMillis(lTo); return getBetweenDays(cFrom,cTo); } public static int getBetweenDays(Calendar cFrom,Calendar cTo) { int betweenDays = 0; // 保证第二个时间一定大于第一个时间 int betweenYears = cTo.get(Calendar.YEAR)-cFrom.get(Calendar.YEAR); betweenDays = cTo.get(Calendar.DAY_OF_YEAR)-cFrom.get(Calendar.DAY_OF_YEAR); for(int i=0;i<betweenYears;i++) { cFrom.set(Calendar.YEAR,(cFrom.get(Calendar.YEAR)+1)); betweenDays += cFrom.getMaximum(Calendar.DAY_OF_YEAR); } return betweenDays; } }