Java中日期型数据的比较及计算

来源:互联网 发布:常见的数据备份方式 编辑:程序博客网 时间:2024/05/20 14:26
转自:http://www.cnblogs.com/xu-lei/p/5881899.html
ava日期比较,日期计算

热身:获取当前时间

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类型的日期比较大小

复制代码
 1  public static int compare_date(String DATE1, String DATE2) { 2          DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3          try { 4              Date dt1 = df.parse(DATE1); 5              Date dt2 = df.parse(DATE2); 6              if (dt1.getTime() > dt2.getTime()) { 7                  System.out.println("dt1 在dt2前"); 8                  return 1; 9              } else if (dt1.getTime() < dt2.getTime()) {10                  System.out.println("dt1在dt2后");11                  return -1;12              } else {13                  return 0;14              }15          } catch (Exception exception) {16              exception.printStackTrace();17          }18          return 0;19      }
复制代码

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

复制代码
 1  public static int daysBetween(String smdate,String bdate){   2          SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");   3          Calendar cal = Calendar.getInstance();     4          long time1 = 0; 5          long time2 = 0; 6           7          try{ 8               cal.setTime(sdf.parse(smdate));    9               time1 = cal.getTimeInMillis();    10               cal.setTime(sdf.parse(bdate)); 11               time2 = cal.getTimeInMillis();  12          }catch(Exception e){13              e.printStackTrace();14          }15          long between_days=(time2-time1)/(1000*3600*24);  16              17         return Integer.parseInt(String.valueOf(between_days));     18      }  
复制代码

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

复制代码
 1  public static int daysBetween2(String startTime, String endTime) { 2           SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH");   3           Calendar cal = Calendar.getInstance();     4           long time1 = 0; 5           long time2 = 0; 6            7           try{ 8                cal.setTime(sdf.parse(startTime));    9                time1 = cal.getTimeInMillis();    10                cal.setTime(sdf.parse(endTime)); 11                time2 = cal.getTimeInMillis();  12           }catch(Exception e){13               e.printStackTrace();14           }15           long between_days=(time2-time1)/(1000*3600);  16               17          return Integer.parseInt(String.valueOf(between_days));     18       }
复制代码

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

复制代码
 1 /** 2      * 计算两段日期的重合日期 3      * @param str1 开始日期1 4      * @param str2 结束日期1 5      * @param str3 开始日期2 6      * @param str4 结束日期2 7      * @return 8      * @throws Exception 9      */10     public static Map<String,Object> comparisonRQ(String str1, String str2, String str3,11             String str4) throws Exception {12         String mesg = "";13         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");14         String startdate = "";15         String enddate = "";16         try {17             Date dt1 = df.parse(str1);18             Date dt2 = df.parse(str2);19             Date dt3 = df.parse(str3);20             Date dt4 = df.parse(str4);21             if (dt1.getTime()<=dt3.getTime()&&dt3.getTime()<=dt2.getTime()&&dt2.getTime()<=dt4.getTime()) {22                 mesg = "f";//重合23                 startdate = str3;24                 enddate = str2;25             }26             if (dt1.getTime()>=dt3.getTime()&&dt3.getTime()<=dt2.getTime()&&dt2.getTime()<=dt4.getTime()) {27                 mesg = "f";//重合28                 startdate = str1;29                 enddate = str2;30             }31             32             if (dt3.getTime()<=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {33                 mesg = "f";//重合34                 startdate = str1;35                 enddate = str4;36             }37             if (dt3.getTime()>=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {38                 mesg = "f";//重合39                 startdate = str3;40                 enddate = str4;41             }42             43             System.out.println(startdate+"----"+enddate);44             45             46         }catch (ParseException e) {47             e.printStackTrace();48             throw new ParseException(e.getMessage(), 0);49         }catch(Exception e){50             e.printStackTrace();51             throw new Exception(e);52         }53         Map<String,Object> map = new HashMap<String,Object>();54         map.put("startdate", startdate);55         map.put("enddate", enddate);56         return map;57     }
原创粉丝点击