java日期扣除小时 - 两小时之间的期间

问题描述:

我找不到我错了什么,它与相同的日期 完美的工作,但是当我输入一个不同的日期,它会做出巨大的计算。 它为我想要做的停车场软件。计算2小时java日期扣除小时 - 两小时之间的期间

public void obtenerSalida(String fech, String fech_s,String hora_sal,String serie,String hora_e, 
     javax.swing.JTextField periodo){ 

    String per; 

    String dateStart =fech+" "+hora_e; 
    String dateStop =fech_s+" "+hora_sal; 

    System.out.println(dateStart); 
    System.out.println(dateStop); 


    SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd 00:00:00"); 

    Date d1 = null; 
    Date d2 = null; 
    try { 
     d1 = format.parse(dateStart); 
     d2 = format.parse(dateStop); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    long diff = d2.getTime() - d1.getTime(); 
    long diffSeconds = diff/1000%60;   
    long diffMinutes = diff/(60 * 1000);   
    long diffHours = diff/(60 * 60 * 1000); 

    if((diffMinutes>=1) && (diffMinutes<60)){ 
     periodo.setText(diffMinutes + " minuto(s)."); 
    } 
    else 
     if((diffMinutes>=60)&&(diffHours>=1 && diffHours<10)){ 
      per=diffHours+":"+(diffMinutes%60); 
      periodo.setText(per); 
     } 

    System.out.println("Time in seconds: " + diffSeconds + " seconds.");   
    System.out.println("Time in minutes: " + diffMinutes + " minutes.");   
    System.out.println("Time in hours: " + diffHours + " hours."); 
    System.out.println(""+diff); 
} 

I enter this values 
fech = 6/12/2016 
fech_s = 7/12/2016 
hora_e = 1:41:49 
hora_s = 8:18:43 

之间的期间,我得到这个

6/12/2016 1:41:49 
7/12/2016 8:18:43 
Time in seconds: 54 seconds. 
Time in minutes: 525996 minutes. 
Time in hours: 8766 hours. 

,我知道它完全错误的。它不能一直这么久

+0

解析器是错的..'YY/MM/DD 00:00:00'你输入'DD/MM/YY ...'就是把差异应代表?分钟可能> 59? – AxelH

+0

仅供参考,您正在使用麻烦的旧日期 - 时间类,现在是遗留的,由java.time类代替。查看“Instant”,“ZonedDateTime”和“Duration”类。 –

看看你的时间和日期格式:

SimpleDateFormat("yy/MM/dd 00:00:00") 

,但你把日期以其他格式。 而是使用以下格式:

"d/MM/yyyy HH:mm:ss"