2016-12-07 26 views
0

私は間違ったものを見つけることができません。同じ日付で完璧に働いていましたが、別の日付を入力すると巨大な計算になります。 それは私がやろうとしている駐車場のソフトウェアです。 2時間Java日付の減算時間 - 2時間の期間

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 ... 'は何diffが表すべきで入力してください?分は59を超えることができますか? – AxelH

+0

FYIでは、今や古くなった厄介な古い日時クラスを、java.timeクラスに置き換えて使用しています。 'Instant'、' ZonedDateTime'、 'Duration'クラスを見てください。 –

答えて

0

ルック長い間されていませんでした:

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

ていますが、他の形式で日付を入れました。

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