java日期操作工具类(获取指定日期、日期转换、相隔天数)
本文实例为大家分享了java日期操作工具类,获取指定日期前一天、后一天;日期转换;两个日期之间相隔天数等工具类,供大家参考,具体内容如下
importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.ArrayList; importjava.util.Calendar; importjava.util.Date; importjava.util.List; publicclassDateUtil{ /** *获得指定日期的前一天 * *@paramspecifiedDay *@paramformat *@return *@throwsException */ publicstaticDategetDayBefore(Datedate,Stringformat){ Calendarc=Calendar.getInstance(); c.setTime(date); intday=c.get(Calendar.DATE); c.set(Calendar.DATE,day-1); StringdayBeforeStr=newSimpleDateFormat(format).format(c.getTime()); DatedayBefore=null; try{ dayBefore=newSimpleDateFormat(format).parse(dayBeforeStr); }catch(ParseExceptione){ e.printStackTrace(); } returndayBefore; } /** *获得指定日期的后一天 * *@paramspecifiedDay *@return */ publicstaticDategetDayAfter(Datedate,Stringformat){ Calendarc=Calendar.getInstance(); c.setTime(date); intday=c.get(Calendar.DATE); c.set(Calendar.DATE,day+1); StringdayAfterStr=newSimpleDateFormat(format).format(c.getTime()); DatedayAfter=null; try{ dayAfter=newSimpleDateFormat(format).parse(dayAfterStr); }catch(ParseExceptione){ e.printStackTrace(); } returndayAfter; } /** *获得指定日期的前一天 * *@paramspecifiedDay *@paramformat *@return *@throwsException */ publicstaticStringgetSpecifiedDayBefore(StringspecifiedDay,Stringformat){ //SimpleDateFormatsimpleDateFormat=new //SimpleDateFormat("yyyy-MM-dd"); Calendarc=Calendar.getInstance(); Datedate=null; try{ date=newSimpleDateFormat("yy-MM-dd").parse(specifiedDay); }catch(ParseExceptione){ e.printStackTrace(); } c.setTime(date); intday=c.get(Calendar.DATE); c.set(Calendar.DATE,day-1); StringdayBefore=newSimpleDateFormat("yyyy-MM-dd").format(c.getTime()); returndayBefore; } /** *获得指定日期的后一天 * *@paramspecifiedDay *@return */ publicstaticStringgetSpecifiedDayAfter(StringspecifiedDay,Stringformat){ Calendarc=Calendar.getInstance(); Datedate=null; try{ //date=newSimpleDateFormat("yy-MM-dd").parse(specifiedDay); date=newSimpleDateFormat(format).parse(specifiedDay); }catch(ParseExceptione){ e.printStackTrace(); } c.setTime(date); intday=c.get(Calendar.DATE); c.set(Calendar.DATE,day+1); //StringdayAfter=new //SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); StringdayAfter=newSimpleDateFormat(format).format(c.getTime()); returndayAfter; } /** *将date类型准成指定format格式的字符串 * *@paramday日期 *@paramformat指定格式 *@return */ publicstaticStringdate2String(Dateday,Stringformat){ StringdateStr=newSimpleDateFormat(format).format(day.getTime()); returndateStr; } /** *将字符串转成指定格式的date类型 * *@paramday日期 *@paramformat指定格式 *@return */ publicstaticDatestring2Date(StringdateStr,Stringformat){ DatestrDate=null; try{ strDate=newSimpleDateFormat(format).parse(dateStr); }catch(ParseExceptione){ e.printStackTrace(); } returnstrDate; } /** * *@Title:DateDate2CompareValue *@Description:两个date类型比较大小 *@paramdayAfterdate类型 *@paramdatedate类型 *@param格式化 *@returnboolean *@throws */ publicstaticbooleanDateDate2CompareValue(DatedayAfter,Datedate,Stringpattern){ SimpleDateFormatsdf=newSimpleDateFormat(pattern); try{ Dated1=sdf.parse(sdf.format(dayAfter)); Dated2=sdf.parse(sdf.format(date)); if(d1.getTime()>=d2.getTime()){ returntrue; } }catch(ParseExceptione){ e.printStackTrace(); } returnfalse; } /** *比较两个日期年月日的大小 *@Title:DateCompareValue *@Description:一个stirng一个date类型比较大小 *@paramdate1String类型 *@paramdate2date类型 *@param@return *@returnboolean *@throws */ publicstaticbooleanDateStrDateCompareValue(Stringdate1,Datedate,Stringpattern){ SimpleDateFormatsdf=newSimpleDateFormat(pattern); try{ Dated1=sdf.parse(date1); Dated2=sdf.parse(sdf.format(date)); if(d1.getTime()>=d2.getTime()){ returntrue; } }catch(ParseExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnfalse; } /** *比较两个日期年月日的大小 *@Title:DateStr2CompareValue *@Description:两个string类型比较时间大小 *@paramdate1 *@paramdate2 *@returnboolean *@throws */ @SuppressWarnings("unused") publicstaticbooleanDateStr2CompareValue(Stringdate1,Stringdate2,Stringpattern){ SimpleDateFormatsdf=newSimpleDateFormat(pattern); try{ Dated1=sdf.parse(date1); Dated2=sdf.parse(date2); if(d1.getTime()>=d2.getTime()){ returntrue; } }catch(ParseExceptione){ e.printStackTrace(); } returnfalse; } /** * *@Title:get2DateListDate *@date2016年5月17日下午2:11:48 *@Description:获取时间之内的相隔天数的date集合 *@param@parampreDate开始时间 *@param@paramnextDate结束时间 *@param@paramformatfomat格式 *@param@return *@returnList<Date>相隔天数集合 *@throws */ publicstaticList<Date>get2DateListDate(StringpreDate,StringnextDate,Stringformat){ List<Date>list=newArrayList<>(); if(nextDate.equals(preDate)){//开始时间结束时间相等就直接返回 list.add(DateUtil.string2Date(preDate,format)); returnlist; } StringnexDate=DateUtil.getSpecifiedDayAfter(preDate,format); list.add(DateUtil.string2Date(preDate,format)); list.add(DateUtil.string2Date(nexDate,format)); while(!nexDate.equals(nextDate)){ StringnextnextDate=DateUtil.getSpecifiedDayAfter(nexDate,format); list.add(DateUtil.string2Date(nextnextDate,format)); nexDate=nextnextDate; } returnlist; } /** * *@Title:get2DateListDate *@date2016年5月17日下午2:11:48 *@Description:获取时间之内的相隔天数的string集合 *@param@parampreDate开始时间 *@param@paramnextDate结束时间 *@param@paramformatfomat格式 *@param@return *@returnList<Date>相隔天数集合 *@throws */ publicstaticList<String>get2DateListDateStr(StringpreDate,StringnextDate,Stringformat){ List<String>list=newArrayList<>(); if(nextDate.equals(preDate)){//如果开始时间等于结束时间那么就是同一天 list.add(preDate); returnlist; } StringnexDate=DateUtil.getSpecifiedDayAfter(preDate,format); list.add(preDate); list.add(nexDate); while(!nexDate.equals(nextDate)){ StringnextnextDate=DateUtil.getSpecifiedDayAfter(nexDate,format); list.add(nextnextDate); nexDate=nextnextDate; } returnlist; } /** * *@Title:get2DateListWithDate *@date2016年5月26日上午9:20:29 *@Description:获取两个日期之间日期的 *@param@paramstartDate开始日期date类型 *@param@paramendDate结束日期date类型 *@param@return *@returnList<Date>datelist *@throws */ publicstaticList<Date>get2DateListWithDate(DatestartDate,DateendDate,Stringformat){ List<Date>list=newArrayList<>(); if(startDate.getTime()>endDate.getTime()){ returnlist; } StringstartDateStr=DateUtil.date2String(startDate,format); StringendDateStr=DateUtil.date2String(endDate,format); if(startDateStr.equals(endDateStr)){//如果开始时间等于结束时间那么就是同一天 list.add(startDate); returnlist; } DatenextDate=DateUtil.getDayAfter(startDate,format); StringnextDateStr=DateUtil.date2String(nextDate,format); //StringendDateStr=DateUtil.date2String(endDate,format); list.add(startDate); list.add(nextDate); while(!nextDateStr.equals(endDateStr)){ StringnextnextDate=DateUtil.getSpecifiedDayAfter(nextDateStr,format); list.add(DateUtil.string2Date(nextnextDate,format)); nextDateStr=nextnextDate; } returnlist; } publicstaticvoidmain(String[]args)throwsException{ /**/StringpreDate=getSpecifiedDayBefore("2016-05-01","yyyy-MM-dd"); StringnextDate=getSpecifiedDayAfter("2016-05-03","yyyy-MM-dd"); DatebefroDay=getDayBefore(newDate(),"yyyy-MM-dd"); DatedateAfter=getDayAfter(newDate(),"yyyy-MM-dd"); //System.out.println("前一天:"+preDate+"后一天:"+nextDate); //System.err.println("前一天:"+date2String(befroDay,"yyyy-MM-dd")+" //后一天:"+dateAfter); Stringmat="yyyy-MM-dd";//这里最好从数据库中读取 SimpleDateFormatdateTimeFormat=newSimpleDateFormat(mat); Datedd=DateUtil.getDayBefore(newDate(),mat); //DatebefroDay=getDayBefore(newDate(),"yyyy-MM-dd"); Stringsd=date2String(befroDay,"yyyy-MM-dd"); StringdateStr=dateTimeFormat.format(befroDay); //System.out.println("dateStr="+dateStr+"sd"+sd); //List<Date>listDate=get2DateListDate("2016-05-01","2016-05-03","yyyy-MM-dd"); //List<String>listDateStr=get2DateListDateStr("2016-05-01","2016-05-03","yyyy-MM-dd"); DatestartDate=newDate(); DateendDate=dateTimeFormat.parse("2016-05-31"); List<Date>listDate=get2DateListWithDate(startDate,endDate,"yyyy-MM-dd"); for(inti=0;i<listDate.size();i++){ System.err.println(listDate.get(i)); } /*for(inti=0;i<listDateStr.size();i++){ //System.out.println(listDateStr.get(i)); }*/ }
以上就是本文的全部内容,希望对大家的学习java程序设计有所帮助。