zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

时间处理函数工具分享(时间戳计算)

计算工具 时间 分享 处理函数
2023-06-13 09:15:17 时间

复制代码代码如下:


importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.GregorianCalendar;
importjava.util.TimeZone;

/**
 *时间处理函数
 *
 *@2008050915:50
 */
publicclassDateUtil{

 privatestaticfinalStringDEFAULT_PATTERN="yyyy-MM-ddHH:mm:ss";

 publicstaticfinalStringTIME_YEAR="yyyy";

 publicstaticfinalStringTIME_MONEN="MM";

 publicstaticfinalStringTIME_DAY="dd";

 publicstaticStringgetDate(Stringinterval,Datestarttime,Stringpattern){
  Calendartemp=Calendar.getInstance(TimeZone.getDefault());
  temp.setTime(starttime);
  temp.add(temp.MONTH,Integer.parseInt(interval));
  SimpleDateFormatsdf=newSimpleDateFormat(pattern);
  returnsdf.format(temp.getTime());
 }

 /**
 *将字符串类型转换为时间类型
 *
 *@return
 */
 publicstaticDatestr2Date(Stringstr){
  Dated=null;
  SimpleDateFormatsdf=newSimpleDateFormat(DEFAULT_PATTERN);
  try{
   d=sdf.parse(str);
  }catch(Exceptione){
   e.printStackTrace();
  }
  returnd;
 }

 publicstaticDatestr2Date(Stringstr,Stringpattern){
  Dated=null;
  SimpleDateFormatsdf=newSimpleDateFormat(pattern);
  try{
   d=sdf.parse(str);
  }catch(Exceptione){
   e.printStackTrace();
  }
  returnd;
 }

 /**
 *将时间格式化
 *
 *@return
 */
 publicstaticDateDatePattern(Datedate){
  SimpleDateFormatsdf=newSimpleDateFormat(DEFAULT_PATTERN);
  try{
   Stringdd=sdf.format(date);
   date=str2Date(dd);
  }catch(Exceptione){
   e.printStackTrace();
  }
  returndate;
 }

 /**
 *将时间格式化
 */
 publicstaticDateDatePattern(Datedate,Stringpattern){
  SimpleDateFormatsdf=newSimpleDateFormat(pattern);
  try{
   Stringdd=sdf.format(date);
   date=str2Date(dd,pattern);
  }catch(Exceptione){
   e.printStackTrace();
  }
  returndate;
 }

 publicstaticStringdate2Str(Datedate){
  SimpleDateFormatsdf=newSimpleDateFormat(DEFAULT_PATTERN);
  returnsdf.format(date);
 }

 publicstaticStringdate2Str(Datedate,Stringformat){
  SimpleDateFormatsdf=newSimpleDateFormat(format);
  returnsdf.format(date);
 }

 /**
 *获取昨天
 *
 *@paramdate
 *@return
 *@throwsException
 */
 publicstaticDategetLastDate(Datedate){
  Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
  calendar.setTime(date);

  calendar.add(calendar.DATE,-1);

  returnstr2Date(date2Str(calendar.getTime()));
 }
 /**
 *获取前几天
 *@paramdate
 *@return
 */
 publicstaticDategetBeforeDate(Datedate,intdates){
  Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
  calendar.setTime(date);

  calendar.add(calendar.DATE,-dates);

  returnstr2Date(date2Str(calendar.getTime()));
 }

 /**
 *获取上周第一天(周一)
 *
 *@paramdate
 *@return
 *@throwsException
 */
 publicstaticDategetLastWeekStart(Datedate){
  Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
  calendar.setTime(date);
  inti=calendar.get(calendar.DAY_OF_WEEK)-1;
  intstartnum=0;
  if(i==0){
   startnum=7+6;
  }else{
   startnum=7+i-1;
  }
  calendar.add(calendar.DATE,-startnum);

  returnstr2Date(date2Str(calendar.getTime()));
 }

 /**
 *获取上周最后一天(周末)
 *
 *@paramdate
 *@return
 *@throwsException
 */
 publicstaticDategetLastWeekEnd(Datedate){
  Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
  calendar.setTime(date);
  inti=calendar.get(calendar.DAY_OF_WEEK)-1;
  intendnum=0;
  if(i==0){
   endnum=7;
  }else{
   endnum=i;
  }
  calendar.add(calendar.DATE,-(endnum-1));

  returnstr2Date(date2Str(calendar.getTime()));
 }

 /**
 *根据年和月得到天数
 *@paramnum月
 *@paramyear年
 *@return
 */
 publicstaticintgetday(intnum,intyear){
  if(num==1||num==3||num==5||num==7||num==8||num==10||num==12){
   return31;
  }elseif(num==2){
   //判断是否为闰年
   if(year%400==0||(year%4==0&&year%100!=0)){
    return29;
   }else{
    return28;
   }

  }else{
   return30;
  }
 }
 /*
 *计算当前日期距离下个月还有多少天
 */
 publicstaticintgetdaymis(Datetime){
  intyear=Integer.parseInt(
    newSimpleDateFormat(TIME_YEAR).format(time));//年

  intmm=Integer.parseInt(
    newSimpleDateFormat(TIME_MONEN).format(time));//月

  intdd=Integer.parseInt(
    newSimpleDateFormat(TIME_DAY).format(time));//日

  
  //获取当前年月的总天数
  intsdd=getday(mm,year);

  returnsdd-dd;

  
 }
 /**
 *日期转秒数
 *@paramdateString
 *@return
 */
 publicstaticlonggetTime(StringdateString){
    longtime=0;
    try{
     Dateret=null;
     SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
     ret=sdf.parse(dateString);
     time=ret.getTime()/1000;
    }catch(Exceptione){

    }
    returntime;
   }

 
 /**
 *精确计算时间差,精确到日
 *@paramfistill起始日期
 *@paramnowtime结束日期
 *@paramtypetype为1返回年月日(如:2年3个月零5天)否则返回总的天数
 *@return
 */
 publicstaticStringpatienage(Datefistill,Datenowtime,Integertype){

  intfyear=Integer.parseInt(
    newSimpleDateFormat(TIME_YEAR).format(fistill));//起始年

  intfmm=Integer.parseInt(
    newSimpleDateFormat(TIME_MONEN).format(fistill));//起始月

  intfdd=Integer.parseInt(
    newSimpleDateFormat(TIME_DAY).format(fistill));//起始日

  
  intnyear=Integer.parseInt(
    newSimpleDateFormat(TIME_YEAR).format(nowtime));//结束年

  intnmm=Integer.parseInt(
    newSimpleDateFormat(TIME_MONEN).format(nowtime));//结束月

  intndd=Integer.parseInt(
    newSimpleDateFormat(TIME_DAY).format(nowtime));//结束日

  intcyear=nyear-fyear;
  intcmm=nmm-fmm;
  intcdd=ndd-fdd;

  
  intzyear=0;
  intzmm=0;
  intzdd=0;

  intcountddd=0; //年月日累计天数

  if(cdd<0){
   if(cmm<0){
    zyear=cyear-1;
    zmm=(cmm+12)-1;
    intdd=getday(zmm,nyear-1);
    zdd=dd+cdd;

    
    countddd=zyear*365+zmm*30+zdd;

   }elseif(cmm==0){
    zyear=cyear-1;
    zmm=12-1;
    intdd=getday(zmm,nyear-1);
    zdd=dd+cdd;

    countddd=zyear*365+zmm*30+zdd;

   }else{
    zyear=cyear;
    zmm=cmm-1;
    intdd=getday(zmm,nyear);
    zdd=dd+cdd;

    countddd=zyear*365+zmm*30+zdd;

   }
  }elseif(cdd==0){
   if(cmm<0){
    zyear=cyear-1;
    zmm=cmm+12;
    zdd=0;

    countddd=zyear*365+zmm*30;

   }elseif(cmm==0){
    zyear=cyear;
    zmm=0;
    zdd=0;

    countddd=zyear*365+zmm*30;

   }else{
    zyear=cyear;
    zmm=cmm;
    zdd=0;

    countddd=zyear*365+zmm*30;
   }
  }else{
   if(cmm<0){
    zyear=cyear-1;
    zmm=cmm+12;
    zdd=cdd;

    countddd=zyear*365+zmm*30+zdd;
   }elseif(cmm==0){
    zyear=cyear;
    zmm=0;
    zdd=cdd;

    countddd=zyear*365+zmm*30+zdd;
   }else{
    zyear=cyear;
    zmm=cmm;
    zdd=cdd;

    countddd=zyear*365+zmm*30+zdd;
   }
  }
  Stringptime=null;

  if(zdd!=0){
   if(zmm!=0){
    if(zyear!=0){
     ptime=zyear+"年"+zmm+"个月"+"零"+zdd+"天";
    }else{
     ptime=zmm+"个月"+"零"+zdd+"天";
    }
   }else{
    if(zyear!=0){
     ptime=zyear+"年"+"零"+zdd+"天";
    }else{
     ptime=zdd+"天";
    }
   }
  }else{
   if(zmm!=0){
    if(zyear!=0){
     ptime=zyear+"年"+zmm+"个月";
    }else{
     ptime=zmm+"个月";
    }
   }else{
    if(zyear!=0){
     ptime=zyear+"年";
    }else{
     ptime=null;
    }
   }
  }
  if(type==1){
   returnptime;  //返回年月日(如:2年3个月零5天)
  }else{
   returnString.valueOf(countddd); //返回总天数
  }

  
 }
 /**
 *得到月数
 *@paramyear年数差
 *@parammonth月数差
 *@return
 */
 publicstaticintgetCmm(Integeryear,Integermonth){
  intzmm=0;
  if(month<0){
   zmm=(month+12)+(year-1)*12;
  }elseif(month==0){
   zmm=year*12;
  }else{
   zmm=year*12+month;
  }
  returnzmm;
 }

 

 /**
 *改更现在时间
 */
 publicstaticDatechangeDate(Stringtype,intvalue){
  Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
  if(type.equals("month")){
   calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+value);
  }elseif(type.equals("date")){
   calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+value);
  }
  returncalendar.getTime();
 }

 /**
 *更改时间
 */
 publicstaticDatechangeDate(Datedate,Stringtype,intvalue){
  if(date!=null){
   //Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
   Calendarcalendar=newGregorianCalendar();
   calendar.setTime(date);
   //Calendarcalendar=Calendar.
   if(type.equals("month")){
    calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+value);
   }elseif(type.equals("date")){
    calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+value);
   }elseif(type.endsWith("year")){
    calendar.set(Calendar.YEAR,calendar.get(Calendar.YEAR)+value);
   }
   returncalendar.getTime();
  }
  returnnull;
 }

 /**
 *haoxw比较时间是否在这两个时间点之间
 *
 *@paramtime1
 *@paramtime2
 *@return
 */
 publicstaticbooleancheckTime(Stringtime1,Stringtime2){
  Calendarcalendar=Calendar.getInstance();
  Datedate1=calendar.getTime();
  Datedate11=DateUtil.str2Date(DateUtil.date2Str(date1,"yyyy-MM-dd")+""+time1);//起始时间

  Calendarc=Calendar.getInstance();
  c.add(Calendar.DATE,1);
  Datedate2=c.getTime();
  Datedate22=DateUtil.str2Date(DateUtil.date2Str(date2,"yyyy-MM-dd")+""+time2);//终止时间

  Calendarscalendar=Calendar.getInstance();
  scalendar.setTime(date11);//起始时间

  Calendarecalendar=Calendar.getInstance();
  ecalendar.setTime(date22);//终止时间

  Calendarcalendarnow=Calendar.getInstance();

  if(calendarnow.after(scalendar)&&calendarnow.before(ecalendar)){
   returntrue;
  }else{
   returnfalse;
  }

 }

 /**
 *haoxw比较时间是否在这两个时间点之间
 *
 *@paramdate11
 *@paramdate22
 *@return
 */
 publicstaticbooleancheckTime(Datedate11,Datedate22){

  

  Calendarscalendar=Calendar.getInstance();
  scalendar.setTime(date11);//起始时间

  Calendarecalendar=Calendar.getInstance();
  ecalendar.setTime(date22);//终止时间

  Calendarcalendarnow=Calendar.getInstance();

  if(calendarnow.after(scalendar)&&calendarnow.before(ecalendar)){
   returntrue;
  }else{
   returnfalse;
  }

 }


 publicstaticbooleancheckDate(Stringdate1,Stringdate2){

  Datedate11=DateUtil.str2Date(date1,"yyyy-MM-ddHH:mm:ss");//起始时间

  Datedate22=DateUtil.str2Date(date2,"yyyy-MM-ddHH:mm:ss");//终止时间

  Calendarscalendar=Calendar.getInstance();
  scalendar.setTime(date11);//起始时间

  Calendarecalendar=Calendar.getInstance();
  ecalendar.setTime(date22);//终止时间

  Calendarcalendarnow=Calendar.getInstance();

  System.out.println(date11.toString());
  System.out.println(date22.toString());
  System.out.println(scalendar.toString());
  System.out.println(ecalendar.toString());
  System.out.println(calendarnow.toString());

  if(calendarnow.after(scalendar)&&calendarnow.before(ecalendar)){
   returntrue;
  }else{
   returnfalse;
  }
 }

 /**
 *获取interval天之前的日期
 *
 *@paraminterval
 *@paramstarttime
 *@parampattern
 *@return
 */
 publicstaticDategetIntervalDate(Stringinterval,Datestarttime,Stringpattern){
  Calendartemp=Calendar.getInstance();
  temp.setTime(starttime);
  temp.add(temp.DATE,Integer.parseInt(interval));
  SimpleDateFormatsdf=newSimpleDateFormat(pattern);
  Stringshijian=sdf.format(temp.getTime());
  returnstr2Date(shijian);
 }

 publicstaticDateformatDate(Datedate){
  SimpleDateFormatbartDateFormat=
  newSimpleDateFormat("yyyy-MM-dd");  
  System.out.println(bartDateFormat.format(date));
  SimpleDateFormatbartDateFormat1=newSimpleDateFormat("yyyy-MM-dd");   
  try{
   Datedate1=bartDateFormat1.parse(bartDateFormat.format(date));
  }catch(ParseExceptione){    
   e.printStackTrace();
  }
  System.out.println(date.getTime());
  returndate;

 }

 publicstaticvoidmain(Stringarf[]){

  /*Stringtime1="2009-05-0719:20:00";
  Stringtime2="2009-05-0819:30:00";

  DateUtild=newDateUtil();
  System.out.println(d.checkDate(time1,time2));
  System.out.println(d.date2Str(newDate()));*/

  //System.out.println(d.getIntervalDate("-3",newDate(),DEFAULT_PATTERN));
  Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
  System.out.println(calendar.toString());
  System.out.println(DateUtil.str2Date("20090731","yyyyMMdd"));

  System.out.println(DateUtil.getBeforeDate(newDate(),2));
  System.out.println(DateUtil.DatePattern(newDate()));

    SimpleDateFormatbartDateFormat=
  newSimpleDateFormat("yyyy-MM-dd");
  Datedate=newDate();
  System.out.println("date;"+bartDateFormat.format(date));
  SimpleDateFormatbartDateFormat1=newSimpleDateFormat("yyyy-MM-dd");   
  try{
   Datedate1=bartDateFormat1.parse(bartDateFormat.format(date));
   System.out.println("日期:"+date1);
  }catch(ParseExceptione){    
   e.printStackTrace();
  }

 }
}