常用的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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。