English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

일반적인 java 날짜 비교와 날짜 계산 방법 요약

이 문서는 일반적인 날짜 비교 방법을 공유하여 미래에 참고하도록 합니다. 

예열:현재 시간 가져오기 

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss\//날짜 형식 설정
String nowDate = df.format(new Date());// new Date()는 현재 시스템 시간을 가져오는 것입니다 

주의:楼主는 date형식이 string형식보다 자유롭지 않다고 생각해왔기 때문에, 아래의 비교는 모두 string형식의 date로 비교됩니다. 정말로 그렇게 고집스럽다면, 아래는 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";//overlapping
        startdate = str3;
        enddate = str2;
      }
      if (dt1.getTime()>=dt3.getTime()&&dt3.getTime()<=dt2.getTime()&&dt2.getTime()<=dt4.getTime()) {
        mesg = "f";//overlapping
        startdate = str1;
        enddate = str2;
      }
      if (dt3.getTime()<=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {
        mesg = "f";//overlapping
        startdate = str1;
        enddate = str4;
      }
      if (dt3.getTime()>=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {
        mesg = "f";//overlapping
        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;
  }

이것이 이 문서의 전체 내용입니다. 많은 도움이 되길 바랍니다. 또한, 노래 튜토리얼에 많은 지지를 부탁드립니다.

선언: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 모두입니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 위반 내용을 발견하면, 이메일을 notice#w로 보내 주시기 바랍니다.3codebox.com(보고할 때는 #을 @으로 변경하십시오. 관련 증거를 제공하고, 사실로 확인되면, 이 사이트는 즉시 위반 내용을 삭제합니다。)

추천해드립니다