2017-03-03 2 views
1

Ich versuche, zwei Daten zu vergleichen, indem ich die Millisekunden in Tage subtrahiere und dividiere, aber dies liefert immer -5479. Stimmt etwas nicht mit meiner Syntax? Ich weiß nicht, warum das passiert.Datumsvergleich funktioniert nicht

if (task_date_view != null) { 
    Date current_date = new Date(); 
    String myFormat = "MM/dd/yy"; 
    DateFormat dateFormat = new SimpleDateFormat(myFormat); 
    Date temp_date; 
    try { 
     temp_date = dateFormat.parse(list_task.getDate()); 
     long difference = temp_date.getTime() - current_date.getTime(); 
     long diffDays = difference/(24 * 60 * 60 * 1000); 
     String date_string = Long.toString(diffDays); 
     task_date_view.setText(date_string + " days left."); 

    } catch (ParseException e) { 
     task_date_view.setText("No days left."); 
    } 

} 
+0

Mögliche Duplikate von [Wie Daten in Java zu vergleichen?] (Http://stackoverflow.com/questions/2592501/how-to-compare-dates-in-java) – Rao

+0

Was ist Ihre Eingabe und erwartete Ausgabe? – shmosel

+1

* Division der Millisekunden in Stunden * - Sie meinen Tage? – shmosel

Antwort

2

Ich denke, die meisten wahrscheinlich, wenn Sie auf ein Datum in der Vergangenheit (zB die verbleibende Zeit auf einer Lizenz) sind zu vergleichen, sind Sie ein negatives bekommen, weil diese nach hinten ist:

temp_date.getTime() - current_date.getTime() 

Wie Differenz in Tagen, darüber zu erhalten:

long end = endDate.getTime(); 
long start = startDate.getTime(); 
int daysDiff = TimeUnit.MILLISECONDS.toDays(Math.abs(end - start)); 

Wenn Sie jetzt ein Datum Unterschied wollen, dann verwenden:

long start = System.currentTimeInMillis(); 
+1

Ich bekomme immer noch 5478, aber es ist nicht negativ. Ich gehe davon aus, dass etwas nicht stimmt mit der Art, wie ich Daten erhalte, und nicht wirklich die Syntax. Danke für Ihre Hilfe. –

+1

Gegeben shmosels letzter Kommentar, ich denke du hast Recht –

+1

Hast du in Betracht gezogen, dass die meisten der Welt ein viel logischeres Datumsformat als die USA benutzen ... * hust * dd/MM/yy? (Nicht nur fasctious - es könnte Ihr Format Problem sein) –

Verwandte Themen