2016-12-07 171 views
0

我找不到我錯了什麼,它與相同的日期 完美的工作,但是當我輸入一個不同的日期,它會做出巨大的計算。 它爲我想要做的停車場軟件。計算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」類。 –

回答

0

看看你的時間和日期格式:

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

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

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