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

网友投稿 343 2023-07-06


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

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

热身:获取当前时间

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.bxGodparse(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;

http:// } 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 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 map = new HashMap();

map.put("startdate", startdate);

map.put("enddate", enddate);

return map;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 线程池详解及实例代码
下一篇:struts2中常用constant命令配置方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~