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

Resumo dos métodos comuns de comparação e cálculo de datas no Java

Este artigo compartilha todos os métodos comuns de comparação entre datas, para referência futura. 

Aquecimento:Obter o tempo atual 

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss;//Configuração do formato de data
String nowDate = df.format(new Date());// new Date() para obter o tempo do sistema atual 

Nota: O autor sempre acreditou que o tipo date não é tão flexível quanto o tipo string, então todas as comparações a seguir são feitas com datas do tipo string. Se você realmente é tão teimoso, ok, aqui está o método de conversão de date para string: 

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss;//Configuração do formato de data
String date = df.format(Date tipo de tempo); 

1.comparação de tamanhos de duas datas do tipo 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 在dt2antes;
         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";//Überlappung
        startdate = str3;
        enddate = str2;
      }
      if (dt1.getTime()>=dt3.getTime()&&dt3.getTime()<=dt2.getTime()&&dt2.getTime()<=dt4.getTime()) {
        mesg = "f";//Überlappung
        startdate = str1;
        enddate = str2;
      }
      if (dt3.getTime()<=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {
        mesg = "f";//Überlappung
        startdate = str1;
        enddate = str4;
      }
      if (dt3.getTime()>=dt1.getTime()&&dt1.getTime()<=dt4.getTime()&&dt4.getTime()<=dt2.getTime()) {
        mesg = "f";//Überlappung
        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;
  }

Isso é tudo o que há no artigo, esperamos que ajude no seu aprendizado e que você apóie o tutorial Ganhador.

Declaração: o conteúdo deste artigo é extraído da internet, pertence ao respectivo proprietário, é contribuído e carregado voluntariamente pelos usuários da internet, o site não possui direitos de propriedade, não foi editado artificialmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de infringir direitos autorais, por favor, envie e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar, forneça provas relacionadas e, uma vez confirmado, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.)

Você pode gostar