Datumsdifferenz ohne Wochenenden

jo_der_poet

Grünschnabel
Hallo, ich habe ein problem bezüglich Datumsberechnung..
ich hab eine Klasse, die mir die Differenz zweier Daten ausgibt.
Ich bekomme die Daten im Format DD.MM.YYYY, berechne die vergangenen tage seit 1.1.und subtrahiere die tage von einander...
so weit so gut, jedoch sollen nur die Wochentage ohne Wochenenden mitgezählt werden...
ich hoffe ihr könnt mir einen tipp geben, :google: hat mir nich geholfen..:(
LG jo
 
Simpel aber grottig von der Performance:
Code:
import java.util.Calendar;
public class asdf {
	public static void main(String[] args) {
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();
		c1.add(Calendar.YEAR, -10);
		System.out.println(new asdf().computeDays(c1, c2));
	}
	protected int computeDays(Calendar c1, Calendar c2) {
		int days = 0;
		while (c1.before(c2)) {
			switch (c1.get(Calendar.DAY_OF_WEEK)) {
			default:
				days++;
				break;
			case Calendar.SATURDAY:
			case Calendar.SUNDAY:
				break;
			}
			c1.add(Calendar.DAY_OF_WEEK, 1);
		}
		return days;
	}
}
 
Wenn du die Tage zwischen zwei Daten weißt, kannst du dir auch die Wochen ausrechnen und dann Anzahl Wochen * 2 von den Tagen abziehen. Vorher noch gucken ob das Start oder Enddatum am WE liegt.
 
Ja, die triviale Lösung von mir kann man dann verwenden um die Testcases einer intelligenten Logik zu asserten. :-)

Ich glaube da steckt aber mehr dahinter als man vermutet, wenn man Schaltjahre, halbe Wochen am Jahresende und -anfang usw berücksichtigt.
 
Ich war bis jetzt immer der Meinung dass 7 Tage immer eine Woche ergeben und 2 Tage davon meist als Wochenende gezählt werden... Schaltjahre und Jahrswechsel hin oder her ;)
 
Du hast recht, da es nur um die Differenz geht, sind Schaltjahre und halbe Wochen am Jahresende tatsächlich egal. Lediglich die eventuelle halbe Woche der Differenz müsste untersucht werden.
 
Erst einmal ein großes Dankeschön.
nun zu neuen "Problemen"....wenn ich jetzt mit
Code:
cal2.set(2009,0,19);
ein Datum hinzufüge, dann fehlt mir die Hälfte im Objekt
Code:
YEAR=2009,MONTH=0,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,
DAY_OF_MONTH=19,DAY_OF_YEAR=?,DAY_OF_WEEK=?...

zufällig noch nen tip parat :confused: :confused:
Danke und LG
jo
 

Neue Beiträge

Zurück