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());
}
}
这就是整个工具类了,供君参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。