2016-04-12 12 views
0

Ich möchte Tage von Datum in Java subtrahieren. Aber ich nicht externe Bibliotheken verwenden möchten. Ich habe einige Fragen von Stackoverflow angesprochen, aber sie schlagen vor, externe Bibliotheken zu verwenden. So habe ich folgende Logik angewandtUnable subtrahieren Tage von Datum in Java

noOfDays = 24; 
Date compareDate = new Date(currentDate - noOfDays * 24 * 60 * 60 * 1000); 
System.out.println("compare date " + compareDate); 

Es funktioniert gut, bis 24 Tage days.But nach 24 Tagen ist es unerwartetes Ergebnis gibt. Gibt es dafür eine Lösung?

+3

Verwenden java.util.Calendar – Jens

+0

joda können hier Ihre beste Freund –

+1

@ ΦXoce 웃 Пepeúpa OP nicht wollen, um Drittanbieter-Bibliotheken zu verwenden – Jens

Antwort

4

Verwenden Sie java.util.Calendar. So etwas:

Calendar c = new Calendar() 
c.setTime(currentDate); 
c.add(Calendar.DAY_OF_MONTH, noOfDays) 
compareDate = c.getTime() 
+0

Danke @Jens. Es hat mein Problem gelöst. – sdk

0

Sie Berechnung zu ganzen Zahlen, die nicht höhere Werte als der max Integer-Wert passen.

Erklären Sie Ihre Variable als long:

long noOfDays = 24; 
Date compareDate = new Date(currentDate - noOfDays * 24 * 60 * 60 * 1000); 
System.out.println("compare date " + compareDate); 

Da jedoch die Kommentare sagte, dies für Substraktion Tage nicht der beste Ansatz ist, so haben Sie einen Blick auf bessere Lösungen in anderen Antworten.

0

Sie können ein verwenden LocalDate (welcher Teil des JDK seit Java 8):

LocalDate today = LocalDate.now(); 
LocalDate compareDate = today.minusDays(24);