java日期时间操作工具类
本文实例为大家分享了java日期时间操作工具类,供大家参考,具体内容如下
虽然jdk1.8开始,加入了time包,里面对时区,本地化时间,格式化,以及时间等做了很好的封装,但仍然要写一个工具类。大家看着用。应该没有bug。如果发现了,请您一定告知,互相学习!好了,上代码:
packagecom.wdy.tools.utils.timeutil; importjava.text.DateFormat; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; importjava.util.GregorianCalendar; /** *TimeUtil日期时间工具类 *@authorwangdy */ publicclassTimeUtil{ /** *获取当前系统时间的小时(HH) * *@returnint当前系统小时HH格式 *@throwsException */ publicstaticintgetHH()throwsException{ DateFormatdf=newSimpleDateFormat("HH"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnInteger.parseInt(str); } /** *获取当前系统时间的分钟数(mm) * *@returnint当前系统分钟mm格式 *@throwsException */ publicstaticintgetMM()throwsException{ DateFormatdf=newSimpleDateFormat("mm"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); //returnInteger.parseInt(str.split(":")[0])*4+ //Integer.parseInt(str.split(":")[1])/15; returnInteger.parseInt(str); } /** *获取当前系统时间的秒数(ss) * *@returnint当前系统时间的秒数(ss) *@throwsException */ publicstaticintgetSS()throwsException{ DateFormatdf=newSimpleDateFormat("ss"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); //returnInteger.parseInt(str.split(":")[0])*4+ //Integer.parseInt(str.split(":")[1])/15; returnInteger.parseInt(str); } /** *获取输入日期的前后日期 * *@paramdate *基准日期yyyy-MM-dd *@paramdayMark *+代表往后,-代表往前 *@returnString前后日期(yyyy-MM-dd) *@throwsException */ publicstaticStringgetOtherDay(Stringdate,intdayMark)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.DAY_OF_MONTH,dayMark); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在周的第一天(周一) * *@paramdate基准日期yyyy *-MM-dd *@returnString周一(yyyy-MM-dd) *@throwsException * **/ publicstaticStringgetWeekFirstDate(Stringdate)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); intdays=c.get(Calendar.DAY_OF_WEEK); StringstrStart=""; if(days==1){ strStart=getOtherDay(date,-days-5); }else{ strStart=getOtherDay(date,-days+2); } returnstrStart; } /** *获取日期所在周的最后一天(周日) * *@paramdate基准日期yyyy *-MM-dd *@returnString(yyyy-MM-dd) *@throwsException * **/ publicstaticStringgetWeekLastDate(Stringdate)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); intdays=c.get(Calendar.DAY_OF_WEEK); StringstrStart=""; if(days==1){ strStart=getOtherDay(date,0); }else{ strStart=getOtherDay(date,8-days); } returnstrStart; } /** *获取日期所在周(年的周数)的前后周的周一 * *@paramdate基准日期yyyy *-MM-dd *@paramweekMark找基准日期 *+代表往后,-代表往前 *@returnString前后周的周一(yyyy-MM-dd) *@throwsException * **/ publicstaticStringgetOtherWeekFirstDate(Stringdate,intweekMark) throwsException{ StringfirstDate=getWeekFirstDate(date); DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(firstDate); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.WEEK_OF_YEAR,weekMark); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在季的第一天 * *@paramdate基准日期yyyy *-MM-dd *@returnString *@throwsException * **/ publicstaticStringgetSeasonFirstDate(Stringdate)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); intyear=c.get(Calendar.YEAR); intmonth=c.get(Calendar.MONTH); if(month<3){ month=0; }elseif(month>=3&&month<6){ month=3; }elseif(month>=6&&month<9){ month=6; }elseif(month>=9&&month<12){ month=9; } c.set(year,month,1); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在季的前后季度的第一天(xxxx-xx-01) * *@paramdate *基准日期yyyy-MM-dd *@paramseasonMark *找基准日期+代表往后,-代表往前 *@returnString *@throwsException * **/ publicstaticStringgetOtherSeasonFirstDate(Stringdate,intseasonMark) throwsException{ StringfirstDate=getSeasonFirstDate(date); DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(firstDate); Calendarc=Calendar.getInstance(); c.setTime(dt); intmonth=seasonMark*3; if(month!=0){ c.add(Calendar.MONTH,month); } StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在月的第一天date基准日期 * *@paramdate *yyyy-MM-dd *@returnString(yyyy-MM) *@throwsException * **/ publicstaticStringgetMonthFirstDate(Stringdate)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); intyear=c.get(Calendar.YEAR); intmonth=c.get(Calendar.MONTH); c.set(year,month,1); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在月的最后一天 * *@paramdate基准日期yyyy *-MM-dd *@returnStringyyyy-MM-dd *@throwsException * **/ publicstaticStringgetMonthLastDate(Stringdate)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); intyear=c.get(Calendar.YEAR); intmonth=c.get(Calendar.MONTH); intdayNum=c.getActualMaximum(Calendar.DAY_OF_MONTH); c.set(year,month,dayNum); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在月的前后月份的第一天(yyyy-MM-01) * *@paramdate基准日期yyyy *-MM-dd *@parammonthMark找基准日期 *+代表往后,-代表往前 *@returnString *@throwsException * **/ publicstaticStringgetOtherMonthFirstDate(Stringdate,intmonthMark) throwsException{ StringfirstDate=getMonthFirstDate(date); DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(firstDate); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.MONTH,monthMark); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在年的第一天 * *@paramdate基准日期yyyy *-MM-dd *@returnString *@throwsException * **/ publicstaticStringgetYearFirstDate(Stringdate)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); intyear=c.get(Calendar.YEAR); c.set(year,0,1); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,10); returnstrStart; } /** *获取日期所在年的前后年的第一天(yyyy-01-01) * *@paramdate *基准日期yyyy-MM-dd *@parammonthMark *找基准日期+代表往后,-代表往前 *@returnString *@throwsException * **/ publicstaticStringgetOtherYearFirstDate(Stringdate,intyearMark) throwsException{ StringfirstDate=getMonthFirstDate(date); DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(firstDate); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.YEAR,yearMark); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime.substring(0,4); returnstrStart+"-01-01"; } /** *取得同期日期年同期 * *@paramdate *yyyy-MM-dd *@paramyear *年份 *@return年同期日期yyyy-MM-dd *@throwsException */ publicstaticStringgetYearTqDay(Stringdate,intyear)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.YEAR,year); StringmDateTime=df.format(c.getTime()); returnmDateTime; } /** *取得同期日期月同期 * *@paramdate *yyyy-MM-dd *@parammonth *月份 *@return月同期日期yyyy-MM-dd *@throwsException */ publicstaticStringgetMonthTqDay(Stringdate,intmonth)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.MONTH,month); StringmDateTime=df.format(c.getTime()); returnmDateTime; } /** *取得同比月份 * *@parammonth *月份 *@return同比月份 *@throwsException */ publicstaticStringgetTbMonth(Stringmonth)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM"); Datedt=df.parse(month); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.YEAR,-1); StringmDateTime=df.format(c.getTime()); returnmDateTime; } /** *取得环比月份 * *@parammonth *月份 *@return环比月份 *@throwsException */ publicstaticStringgetHbMonth(Stringmonth)throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM"); Datedt=df.parse(month); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.MONTH,-1); StringmDateTime=df.format(c.getTime()); returnmDateTime; } /** *获取两个日期之间的天数 * *@paramsDate *--起始日期yyyy-MM-dd *@parameDate *--结束日期yyyy-MM-dd *@returnint--天数 *@throwsException **/ publicstaticintgetDaysOfTwoDate(StringsDate,StringeDate) throwsException{ DateFormatdf1=newSimpleDateFormat("yyyy-MM-dd"); DateFormatdf2=newSimpleDateFormat("yyyy-MM-dd"); Datedate1=df1.parse(sDate); Datedate2=df2.parse(eDate); if(null==date1||null==date2){ return-1; } longintervalMilli=date2.getTime()-date1.getTime(); return(int)(intervalMilli/(24*60*60*1000)); } /** *获取两个月份之间的月数 * *@paramsDate *--起始月yyyy-MM *@parameDate *--结束月yyyy-MM *@returnint--天数 *@throwsException **/ publicstaticintgetMonthOfTwoMonth(StringsDate,StringeDate) throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM"); Datedate1=df.parse(sDate); Datedate2=df.parse(eDate); if(null==date1||null==date2){ return-1; } Calendarc1=Calendar.getInstance(); c1.setTime(date1); Calendarc2=Calendar.getInstance(); c2.setTime(date2); intmonth1=c1.get(Calendar.YEAR)*12+c1.get(Calendar.MONTH); intmonth2=c2.get(Calendar.YEAR)*12+c2.get(Calendar.MONTH); returnmonth2-month1; } /**比较两个日期 *@paramsDate起始日期 *@parameDate结束日期 *@parampattern日期格式 *@returnboolean返回比较结果 *@throwsException */ publicstaticbooleancompareDate(StringsDate,StringeDate,Stringpattern) throwsException{ DateFormatdf1=newSimpleDateFormat(pattern); Datedate1=df1.parse(sDate); Datedate2=df1.parse(eDate); if(null==date1||null==date2){ returnfalse; } longintervalMilli=date2.getTime()-date1.getTime(); if(intervalMilli>0){ returntrue; } returnfalse; } /**获取两个日期之间的分钟数 *@paramsDate起始日期yyyy-MM-ddHH:mm:ss *@parameDate结束日期yyyy-MM-ddHH:mm:ss *@returnint--分钟数 *@throwsException */ publicstaticintgetMinsOfTwoDate(StringsDate,StringeDate) throwsException{ DateFormatdf1=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); DateFormatdf2=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Datedate1=df1.parse(sDate); Datedate2=df2.parse(eDate); if(null==date1||null==date2){ return-1; } longintervalMilli=date2.getTime()-date1.getTime(); return(int)(intervalMilli/(60*1000)); } /** *获取当前系统时间的字符串 * *@returnString--当天的整个日期字符串,年月日时分秒,返回格式yyyy-MM-ddHH:mm:ss *@throwsException **/ publicstaticStringgetToDayAllStr()throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /** *获取当前系统日期的字符串 * *@returnString--当天的年月日字符串,返回格式yyyy-MM-dd *@throwsException **/ publicstaticStringgetToDayDateStr()throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /** *获取当前系统日期的字符串 * *@returnString--当天的年月日字符串,返回格式yyyyMMdd **/ publicstaticStringgetToDayYmd()throwsException{ DateFormatdf=newSimpleDateFormat("yyyyMMdd"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /**获取当前系统时间的指定类型字符串 *@parampattern指定的格式 *@returnString--当天的指定类型的字符串 *@throwsException */ publicstaticStringgetToDayStrByPattern(Stringpattern)throwsException{ DateFormatdf=newSimpleDateFormat(pattern); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /** *获取当前系统时间的字符串 * *@returnString当天的时分秒字符串,返回格式HH:mm:ss **/ publicstaticStringgetToDayHmsStr()throwsException{ DateFormatdf=newSimpleDateFormat("HH:mm:ss"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /** *获取当前系统时间的字符串 * *@returnString--当天的时分秒字符串,返回格式HHmmss **/ publicstaticStringgetToDayHms()throwsException{ DateFormatdf=newSimpleDateFormat("HHmmss"); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /**获取当前系统指定格式的时间的字符串 *@parampattern指定格式 *@returnString当前系统指定格式时间字符串 *@throwsException */ publicstaticStringgetToDayHmsByPattern(Stringpattern)throwsException{ DateFormatdf=newSimpleDateFormat(pattern); Datedate=newDate(System.currentTimeMillis()); Stringstr=df.format(date); returnstr; } /** *获取指定日期的时刻字符串 * *@paramdayStr *(yyyy-MM-ddHH:mm:ss) *@returnString--当天的时分秒字符串,返回格式:HHmmss **/ publicstaticStringgetHmsStrForDateTime(StringdayStr)throwsException{ DateFormatdf=newSimpleDateFormat("HHmmss"); DateFormatdf2=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Stringstr=df.format(df2.parse(dayStr)); returnstr; } /** *日期格式转换oldPattern转成newPattern * *@paramstr要转换格式的日期字符串 *@paramoldPattern原有格式 *@paramnewPattern目标格式 *@returnString转换格式化后的字符串 *@throwsException */ publicstaticStringchangeDateType(Stringstr,StringoldPattern,StringnewPattern)throwsException{ DateFormatdf=newSimpleDateFormat(oldPattern); DateFormatdf1=newSimpleDateFormat(newPattern); returndf1.format(df.parse(str)); } /** *获取输入日期的前后几小时的日期时间 * *@paramdate基准日期yyyy-MM-ddHH:mm:ss *@paramdayMark找基准日期 *+代表往后,-代表往前 *@return *@throwsException * **/ publicstaticStringgetOtherHour(Stringdate,intdayMark) throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.HOUR_OF_DAY,dayMark); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime; returnstrStart; } /** *获取前后分钟数 * *@paramdateyyyy-MM-ddHH:mm:ss *@paramminuteMark前后标识+-数值 *@return返回 *@throwsException */ publicstaticStringgetOtherMinute(Stringdate,intminuteMark) throwsException{ DateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Datedt=df.parse(date); Calendarc=Calendar.getInstance(); c.setTime(dt); c.add(Calendar.MINUTE,minuteMark); StringmDateTime=df.format(c.getTime()); StringstrStart=mDateTime; returnstrStart; } /** *解析字符串为Date类型 *@paramdate要被解析的日期字符串 *@parampattern类型格式,默认yyyy-MM-ddHH:mm:ss *@returnDate被解析后的日期 *@throwsException */ publicstaticDateparseDate(Stringdate,Stringpattern)throwsException{ DatereturnDate=null; if(pattern==null||pattern.equals("")||pattern.equals("null")){ pattern="yyyy-MM-ddHH:mm:ss"; } java.text.SimpleDateFormatsdf=newjava.text.SimpleDateFormat(pattern); try{ returnDate=sdf.parse(date); }catch(Exceptione){ e.printStackTrace(); } returnreturnDate; } /** *格式化Date类型日期 *@paramdateDate类型日期 *@parampattern类型格式 *@returnString,被格式化后的日期 *@throwsException */ publicstaticStringformatDate(Datedate,Stringpattern)throwsException{ StringreturnDate=null; if(date==null){ return""; } if(pattern==null||pattern.equals("")||pattern.equals("null")){ pattern="yyyy-MM-ddHH:mm:ss"; } java.text.SimpleDateFormatsdf=newjava.text.SimpleDateFormat(pattern); returnDate=sdf.format(date); returnreturnDate; } /** *得到当前月份yyyy-MM; * *@returnString */ publicstaticStringgetSystemMonth(){ java.util.Datedate=newjava.util.Date(); SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM"); StringmDateTime1=formatter.format(date); returnmDateTime1; } /** *获取月所在年的最后一个月 *@parammonth月份 *@paramm *@return *@throwsException */ publicstaticStringgetYearLastMonth(Stringmonth,intm)throwsException{ SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM"); DatenewDate=newDate(); newDate=format.parse(month); Calendarc=Calendar.getInstance(); c.setTime(newDate); c.add(Calendar.YEAR,m); newDate.setTime(c.getTimeInMillis()); returnformat.format(newDate).substring(0,4)+"-12"; } /** *获取前后月份 *+往后推迟m月 * *@parammonth *@paramm *@return *@throwsException */ publicstaticStringgetOtherMonth(Stringmonth,intm)throwsException{ SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM"); DatenewDate=newDate(); newDate=format.parse(month); Calendarc=Calendar.getInstance(); c.setTime(newDate); c.add(Calendar.MONTH,m); newDate.setTime(c.getTimeInMillis()); returnformat.format(newDate); } /** *获取前后月份+往后推迟m月 * *@parammonth *@paramm *@return *@throwsException */ publicstaticStringgetOtherMonthYMD(Stringmonth,intm)throwsException{ SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd"); DatenewDate=newDate(); newDate=format.parse(month); Calendarc=Calendar.getInstance(); c.setTime(newDate); c.add(Calendar.MONTH,m); newDate.setTime(c.getTimeInMillis()); returnformat.format(newDate); } /** *根据年月字符串得到那个月的总天数 *@parammonthStryyyy-MM *@returnint总天数 *@throwsException */ publicstaticintgetDaysOfMonth(StringmonthStr)throwsException{ SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM"); Datedate=format.parse(monthStr); Calendarcalendar=newGregorianCalendar(); calendar.setTime(date); intdayNum=calendar.getActualMaximum(Calendar.DAY_OF_MONTH); returndayNum; } /** *获取指定时刻前后指定步长的时刻 * *@paramtime *时刻HH:mm:ss *@paramm *步长(+-m)0:输出原来的时刻,+1输出后一个时刻,-1输出前一个时刻 *@returnStringHH:mm:ss *@throwsException */ publicstaticStringgetBeforeAfterTimeForMin(Stringtime,intm) throwsException{ Calendarnow=Calendar.getInstance(); SimpleDateFormatformat=newSimpleDateFormat("HH:mm:ss"); DatenewDate=newDate(); newDate=format.parse(time); now.setTime(newDate); now.add(Calendar.MINUTE,m); returnformat.format(now.getTime()); } /** *获取指定格式的前后时间 * *@paramtime *@paramm *(0:输出原来的时刻,+1输出后一个时刻,-1输出前一个时刻) *@parampattern *类型的格式必须被time的格式所包含 *@return *@throwsException */ publicstaticStringgetBeforeAfterDateTimeByTime(Stringtime,intm, Stringpattern)throwsException{ Calendarnow=Calendar.getInstance(); SimpleDateFormatsdf=newSimpleDateFormat(pattern); DatenewDate=newDate(); newDate=sdf.parse(time); now.setTime(newDate); now.add(Calendar.MINUTE,m); returnsdf.format(now.getTime()); } }
这就是整个工具类了,供君参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。