欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

常用的java日期比较和日期计算方法小结

程序员文章站 2024-03-13 15:33:39
本文为大家分享的都是常用的日期之间的比较方法,供以后参考。  热身:获取当前时间  simpledateformat df = new simp...

本文为大家分享的都是常用的日期之间的比较方法,供以后参考。 

热身:获取当前时间 

simpledateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");//设置日期格式
string nowdate = df.format(new date());// new date()为获取当前系统时间
 

注:楼主一直以为date类型不如string类型随心所欲,所以下面的比较都是string类型的date进行比较。如果你真的真的就是那么倔强,ok,下面是date转string的方法: 

simpledateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");//设置日期格式
string date = df.format(date类型的时间);
 

1.两个string类型的日期比较大小 

public static int compare_date(string date1, string date2) {
     dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");
     try {
       date dt1 = df.parse(date1);
       date dt2 = df.parse(date2);
       if (dt1.gettime() > dt2.gettime()) {
         system.out.println("dt1 在dt2前");
         return 1;
       } else if (dt1.gettime() < dt2.gettime()) {
         system.out.println("dt1在dt2后");
         return -1;
       } else {
         return 0;
       }
     } catch (exception exception) {
       exception.printstacktrace();
     }
     return 0;
   }

2.返回两个string类型日期之间相差的天数 

public static int daysbetween(string smdate,string bdate){ 
     simpledateformat sdf=new simpledateformat("yyyy-mm-dd"); 
     calendar cal = calendar.getinstance();  
     long time1 = 0;
     long time2 = 0;
     
     try{
       cal.settime(sdf.parse(smdate));  
       time1 = cal.gettimeinmillis();  
       cal.settime(sdf.parse(bdate)); 
       time2 = cal.gettimeinmillis(); 
     }catch(exception e){
       e.printstacktrace();
     }
     long between_days=(time2-time1)/(1000*3600*24); 
       
    return integer.parseint(string.valueof(between_days));   
   }

3.返回两个string类型日期相差的小时数 

public static int daysbetween2(string starttime, string endtime) {
     simpledateformat sdf=new simpledateformat("yyyy-mm-dd hh"); 
     calendar cal = calendar.getinstance();  
     long time1 = 0;
     long time2 = 0;
     
     try{
        cal.settime(sdf.parse(starttime));  
        time1 = cal.gettimeinmillis();  
        cal.settime(sdf.parse(endtime)); 
        time2 = cal.gettimeinmillis(); 
     }catch(exception e){
       e.printstacktrace();
     }
     long between_days=(time2-time1)/(1000*3600); 
       
     return integer.parseint(string.valueof(between_days));   
   }

4.计算两段日期的重合日期 

/**
   * 计算两段日期的重合日期
   * @param str1 开始日期1
   * @param str2 结束日期1
   * @param str3 开始日期2
   * @param str4 结束日期2
   * @return
   * @throws exception
   */
  public static map<string,object> comparisonrq(string str1, string str2, string str3,
      string str4) throws exception {
    string mesg = "";
    dateformat df = new simpledateformat("yyyy-mm-dd");
    string startdate = "";
    string enddate = "";
    try {
      date dt1 = df.parse(str1);
      date dt2 = df.parse(str2);
      date dt3 = df.parse(str3);
      date dt4 = df.parse(str4);
      if (dt1.gettime()<=dt3.gettime()&&dt3.gettime()<=dt2.gettime()&&dt2.gettime()<=dt4.gettime()) {
        mesg = "f";//重合
        startdate = str3;
        enddate = str2;
      }
      if (dt1.gettime()>=dt3.gettime()&&dt3.gettime()<=dt2.gettime()&&dt2.gettime()<=dt4.gettime()) {
        mesg = "f";//重合
        startdate = str1;
        enddate = str2;
      }
      
      if (dt3.gettime()<=dt1.gettime()&&dt1.gettime()<=dt4.gettime()&&dt4.gettime()<=dt2.gettime()) {
        mesg = "f";//重合
        startdate = str1;
        enddate = str4;
      }
      if (dt3.gettime()>=dt1.gettime()&&dt1.gettime()<=dt4.gettime()&&dt4.gettime()<=dt2.gettime()) {
        mesg = "f";//重合
        startdate = str3;
        enddate = str4;
      }
      
      system.out.println(startdate+"----"+enddate);
      
      
    }catch (parseexception e) {
      e.printstacktrace();
      throw new parseexception(e.getmessage(), 0);
    }catch(exception e){
      e.printstacktrace();
      throw new exception(e);
    }
    map<string,object> map = new hashmap<string,object>();
    map.put("startdate", startdate);
    map.put("enddate", enddate);
    return map;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。