Anzahl Tage berechnen zwischen zwei Dates

Java:
private final Calendar calendar1 = Calendar.getInstance();
private final Calendar calendar2 = Calendar.getInstance();

calendar1.set(year, month, day);

int millSec=calendar1.compareTo(calendar2 );
 
Hm, das sind leider nicht mal milliSeconds... Zumindest verstehe ich die API so, dass nur irgendein Wert größer / kleiner null ausgegeben wird... Bei mir kam in einem kleinen Test jedenfalls immer nur 1, 0 oder -1 raus...

Ich habe das irgendwann mal mit folgender Funktion gemacht, ist zwar vielleicht nicht wirklich schön, klappt aber zuverlässig:

Java:
	public static	int getDayDiff(Date d1){
		SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
			Date reference = null;
			try {
				reference = format.parse("01.01.2010");
			} catch (ParseException e) {
				System.err.println("Hierher kommen wir schwer ;-)");
				e.printStackTrace();
			}
		//1000 ms = 1s, 60s = 1 min, 60 min = 1h, 24h = 1 day
		return (int) ((reference.getTime() -d1.getTime())/(1000*60*60*24) + 1);
	}
 
Zuletzt bearbeitet:
Hm... noch mal drüber nachgedacht, war mir dann doch zu "hässlich"... So ist es zwar auch nicht viel schöner, aber immerhin ein bisschen besser, und es wird kein Format-Objekt mehr gebraucht:

Java:
	public static	int getDayDiff(Date d1){
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.DAY_OF_MONTH, 01);
		cal.set(Calendar.MONTH,Calendar.JANUARY);
		cal.set(Calendar.YEAR, 2010);
		
		//1000 ms = 1s, 60s = 1 min, 60 min = 1h, 24h = 1 day
		return (int) ((cal.getTimeInMillis() -d1.getTime())/(1000*60*60*24));
	}

Gruß,

RoCMe
 
Statt die Millisekunden eines Tages selber zu berechnen kann man auch besser
Java:
TimeUnit.DAYS.toMillis(1)
verwenden.
 
Zurück