packagecom.sipgl.eam.utils;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;importjava.util.LinkedHashMap;/*** 日期公用处理类
*
*@authorSongJun
*@version1.3*/publicclassDateUtil {/*** 解析一个日期之间的所有月份
*
*@parambeginDateStr
*@paramendDateStr
*@return*/publicstaticArrayList getMonthList(String beginDateStr, String endDateStr) {//指定要解析的时间格式SimpleDateFormat f=newSimpleDateFormat("yyyy-MM");//返回的月份列表String sRet="";//定义一些变量Date beginDate=null;
Date endDate=null;
GregorianCalendar beginGC=null;
GregorianCalendar endGC=null;
ArrayList list=newArrayList();try{//将字符串parse成日期beginDate=f.parse(beginDateStr);
endDate=f.parse(endDateStr);//设置日历beginGC=newGregorianCalendar();
beginGC.setTime(beginDate);
endGC=newGregorianCalendar();
endGC.setTime(endDate);//直到两个时间相同while(beginGC.getTime().compareTo(endGC.getTime())<=0) {
sRet=beginGC.get(Calendar.YEAR)+"-"+(beginGC.get(Calendar.MONTH)+1);
list.add(sRet);//以月为单位,增加时间beginGC.add(Calendar.MONTH,1);
}returnlist;
}catch(Exception e) {
e.printStackTrace();returnnull;
}
}/*** 解析一个日期段之间的所有日期
*
*@parambeginDateStr
* 开始日期
*@paramendDateStr
* 结束日期
*@return*/publicstaticArrayList getDayList(String beginDateStr, String endDateStr) {//指定要解析的时间格式SimpleDateFormat f=newSimpleDateFormat("yyyy-MM-dd");//定义一些变量Date beginDate=null;
Date endDate=null;
Calendar beginGC=null;
Calendar endGC=null;
ArrayList list=newArrayList();try{//将字符串parse成日期beginDate=f.parse(beginDateStr);
endDate=f.parse(endDateStr);//设置日历beginGC=Calendar.getInstance();
beginGC.setTime(beginDate);
endGC=Calendar.getInstance();
endGC.setTime(endDate);
SimpleDateFormat sdf=newSimpleDateFormat("yyyy-MM-dd");//直到两个时间相同while(beginGC.getTime().compareTo(endGC.getTime())<=0) {
list.add(sdf.format(beginGC.getTime()));//以日为单位,增加时间beginGC.add(Calendar.DAY_OF_MONTH,1);
}returnlist;
}catch(Exception e) {
e.printStackTrace();returnnull;
}
}publicstaticArrayList getYearList() {
ArrayList list=newArrayList();
Calendar c=null;
c=Calendar.getInstance();
c.setTime(newDate());intcurrYear=Calendar.getInstance().get(Calendar.YEAR);intstartYear=currYear-5;intendYear=currYear+10;for(inti=startYear; i
list.add(newInteger(i));
}returnlist;
}publicstaticintgetCurrYear() {returnCalendar.getInstance().get(Calendar.YEAR);
}/*** 得到某一年周的总数
*
*@paramyear
*@return*/publicstaticLinkedHashMap getWeekList(intyear) {
LinkedHashMap map=newLinkedHashMap();
Calendar c=newGregorianCalendar();
c.set(year, Calendar.DECEMBER,31,23,59,59);intcount=getWeekOfYear(c.getTime());
SimpleDateFormat sdf=newSimpleDateFormat("yyyy-MM-dd");
String dayOfWeekStart="";
String dayOfWeekEnd="";for(inti=1; i<=count; i++) {
dayOfWeekStart=sdf.format(getFirstDayOfWeek(year, i));
dayOfWeekEnd=sdf.format(getLastDayOfWeek(year, i));
map.put(newInteger(i),"第"+i+"周(从"+dayOfWeekStart+"至"+dayOfWeekEnd+")");
}returnmap;
}/*** 得到一年的总周数
*@paramyear
*@return*/publicstaticintgetWeekCountInYear(intyear){
Calendar c=newGregorianCalendar();
c.set(year, Calendar.DECEMBER,31,23,59,59);intcount=getWeekOfYear(c.getTime());returncount;
}/*** 取得当前日期是多少周
*
*@paramdate
*@return*/publicstaticintgetWeekOfYear(Date date) {
Calendar c=newGregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7);
c.setTime(date);returnc.get(Calendar.WEEK_OF_YEAR);
}/*** 得到某年某周的第一天
*
*@paramyear
*@paramweek
*@return*/publicstaticDate getFirstDayOfWeek(intyear,intweek) {
Calendar c=newGregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE,1);
Calendar cal=(GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week*7);returngetFirstDayOfWeek(cal.getTime());
}/*** 得到某年某周的最后一天
*
*@paramyear
*@paramweek
*@return*/publicstaticDate getLastDayOfWeek(intyear,intweek) {
Calendar c=newGregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE,1);
Calendar cal=(GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week*7);returngetLastDayOfWeek(cal.getTime());
}/*** 得到某年某月的第一天
*@paramyear
*@parammonth
*@return*/publicstaticDate getFirestDayOfMonth(intyear,intmonth){
month=month-1;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);intday=c.getActualMinimum(c.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, day);returnc.getTime();
}/*** 提到某年某月的最后一天
*@paramyear
*@parammonth
*@return*/publicstaticDate getLastDayOfMonth(intyear,intmonth){
month=month-1;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);intday=c.getActualMaximum(c.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, day);returnc.getTime();
}/*** 取得当前日期所在周的第一天
*
*@paramdate
*@return*/publicstaticDate getFirstDayOfWeek(Date date) {
Calendar c=newGregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());//Mondayreturnc.getTime();
}/*** 取得当前日期所在周的最后一天
*
*@paramdate
*@return*/publicstaticDate getLastDayOfWeek(Date date) {
Calendar c=newGregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()+6);//Sundayreturnc.getTime();
}
}