Calendar-Prüfung funktioniert nicht korrekt

Moch

Bekanntes Mitglied
Diese Methode soll prüfen, wie viele Sonn- und Samstag in einem Zeitintervall enthalten sind. Leider gibt die Methode im Intervall vom 01.01.2012 - 31.01.2012 genau zwei mal Samstag aus und das wars. Mag da mal jemand rüberschauen und mir sagen, wo der Fehler liegt?

Hier die Methode:
Java:
			/**
			 * Korrigiert die Anzahl der Urlaubstage um Wochenendtage
			 * @param anfang Timestamp: Ist das Anfangsdatum des Antrages
			 * @param ende Timestamp: Ist das Enddatum des Antrages
			 * @param origLaenge Integer: Ist die bisher berechnete Anzahl Urlaubstage
			 * @return Integer: Korrigierte Menge an Urlaubstagen;
			 */
			private int correctWeekend(Timestamp anfang, Timestamp ende, int origLaenge) {
				Calendar beg = Calendar.getInstance();
				Calendar run = Calendar.getInstance();
				Calendar end = Calendar.getInstance();
				beg.set(anfang.getYear(), anfang.getMonth(), anfang.getDay());
				run.set(anfang.getYear(), anfang.getMonth(), anfang.getDay());
				end.set(ende.getYear(), ende.getMonth(), ende.getDay());
				
				while (run.before(end)){
					if(run.DAY_OF_WEEK == Calendar.SATURDAY){
						origLaenge--;

                                                System.out.println("DEBUG: SAMSTAG");
					}
					if(run.DAY_OF_WEEK == Calendar.SUNDAY){
						origLaenge--;
                                                System.out.println("DEBUG: SONNTAG");
					}
					run.add(Calendar.DAY_OF_MONTH, 1);
				}
				return origLaenge;
			}

Grüße
Moch
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Auch wenn es jetzt zu gehen scheint: Verwendest Du java.sql.Timestamp? Wenn ja, dann würde ich mir noch mal die Methoden getDate() vs. getDay() anschauen.

Unabhängig davon könnte man die enthaltene Anzahl an Samstagen und Sonntagen auch anhand der Anzahl der Tage und dem Start oder Enddatum berechnen, ohne von sich von Tag zu Tag zu hangeln.
 

Moch

Bekanntes Mitglied
Das Problem hat sich leider geändert (siehe Edit).
Läuft also nicht korrekt.

Ja, habe eben mal reingeschaut und tatsächlich Day zu Date geändert.

Hm, den Ansatz mit der Gesamtzahl der Tag habe ich übersehen... mal wieder zu kompliziert gedacht. Ist nur dieses Mist-Framework, das wir nutzen müssen schuld dran^^ - da muss man kompliziert denken.

Dennoch würde mich der Fehler in der Geschichte interessieren. Warum gibt das Ding jetzt mit Date eine endlose Zahl am Samstagen aus?

Hier nochmal der aktuelle Quellcode

Java:
			/**
			 * Korrigiert die Anzahl der Urlaubstage um Wochenendtage
			 * @param anfang Timestamp: Ist das Anfangsdatum des Antrages
			 * @param ende Timestamp: Ist das Enddatum des Antrages
			 * @param origLaenge Integer: Ist die bisher berechnete Anzahl Urlaubstage
			 * @return Integer: Korrigierte Menge an Urlaubstagen;
			 */
			private int correctWeekend(Timestamp anfang, Timestamp ende, int origLaenge) {
				Calendar beg = Calendar.getInstance();
				Calendar run = Calendar.getInstance();
				Calendar end = Calendar.getInstance();
				beg.set(anfang.getYear(), anfang.getMonth(), anfang.getDate());
				run.set(anfang.getYear(), anfang.getMonth(), anfang.getDate());
				end.set(ende.getYear(), ende.getMonth(), ende.getDate());
				System.out.println("CCD: " + run.toString());
				
				while (run.before(end)){
					if(run.DAY_OF_WEEK == Calendar.SATURDAY){
						origLaenge--;
						System.out.println("SAMSTAG");
					}
					if(run.DAY_OF_WEEK == Calendar.SUNDAY){
						origLaenge--;
						System.out.println("SONNTAG");
					}
					run.add(Calendar.DAY_OF_MONTH, 1);
				}
				return origLaenge;
			}

Ergebnis um 01.01. bis zum 31.01.:
Alle Tage sind Samstage -.-
 
Zuletzt bearbeitet:
G

Gast2

Gast
Java:
		System.out.println(Calendar.DAY_OF_WEEK);
		System.out.println(Calendar.SATURDAY);
Fällt dir was auf? ;)

An den aktuellen Tag des Kalenders kommst du mit der Methode get().
 

Moch

Bekanntes Mitglied
Ah, vielen Dank.
Nur bleibt mir noch eine Frage über die Methode get().
Da steht, dass ich das entsprechende field angeben muss.
Nun, ich habe rausgefunden, dass get(1) das Jahr zurückgibt. Welches "Field" ist denn konkret für den Wochentag da? - Die Methodenbeschreibung ist da doch etwas sparsam mit Informationen

Edit: Sorry, habs jetzt, denke ich. Das denke ist offenbar so langsam mit einem dauer-wait() belegt -.-
 
Zuletzt bearbeitet:
G

Gast2

Gast
Es gibt in der Klasse ne ganze Menge Konstanten, z.b. auch:
static int DAY_OF_WEEK
Field number for get and set indicating the day of the week.

Du kommst also per
Code:
get(Calendar.DAY_OF_WEEK)
an den Tag des Monats.
 

Moch

Bekanntes Mitglied
Ich habs mittlerweile auch herausgefunden, als ich genau diesen Teil der JavaDoc gelesen hatte, aber trotzdem vielen, vielen Dank!
Ich weiß echt nicht: Ich sitze seit Freitag fast ununterbrochen daran, dieses Projekt zu einem sinnigen Abschluss zu bekommen. Irgendwie hat der Denkprozess ziemlich nachgelassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
B Calendar Java Basics - Anfänger-Themen 5
N Erste Schritte Calendar.DAY_OF_YEAR Java Basics - Anfänger-Themen 3
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
I iCal Calendar mit Password und Username Java Basics - Anfänger-Themen 0
E Gregorian Calendar übergibt falschen Wochentag Java Basics - Anfänger-Themen 2
P Tag der Zeitumstellung Sommer->Winterzeit (Java Calendar) Problem Java Basics - Anfänger-Themen 5
S Calendar Neujahr Java Basics - Anfänger-Themen 10
T Calendar Methode roll(); Java Basics - Anfänger-Themen 2
J Calendar holidays Java Basics - Anfänger-Themen 4
L Datediff calendar Java Basics - Anfänger-Themen 3
D Java Date/Calendar Problem Java Basics - Anfänger-Themen 4
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
K Java Calendar Time Java Basics - Anfänger-Themen 10
N Fehler Calendar Java Basics - Anfänger-Themen 4
B Klassen Gregorian Calendar Java Basics - Anfänger-Themen 3
G Gregorian Calendar Eingabeprüfung Java Basics - Anfänger-Themen 4
M Calendar add-Funktion Java Basics - Anfänger-Themen 2
M Probleme mit Calendar Java Basics - Anfänger-Themen 9
0 Calendar - komme nicht weiter mit add Java Basics - Anfänger-Themen 2
lumo Datentypen Calendar to string und retour? Java Basics - Anfänger-Themen 4
S Calendar -- today Java Basics - Anfänger-Themen 4
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
W String zu Calendar parsen Java Basics - Anfänger-Themen 4
P (Arbeitstag-) Calendar - 9 anstatt 24 Stunden Java Basics - Anfänger-Themen 12
B Fehlermeldung für Calendar Java Basics - Anfänger-Themen 20
H Calendar rechnet möglicherweise falsch Java Basics - Anfänger-Themen 6
N Calendar Probleme Java Basics - Anfänger-Themen 5
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
A calendar Java Basics - Anfänger-Themen 6
K java.util.Calendar und Objekt Java Basics - Anfänger-Themen 7
C Problem Date / Calendar Java Basics - Anfänger-Themen 3
Paule Problem mit Date und Calendar Java Basics - Anfänger-Themen 3
W Gregorian Calendar Java Basics - Anfänger-Themen 5
S Calendar.set Time, Ermittlung der Anzahl Tage fehlerhaft Java Basics - Anfänger-Themen 9
G Probleme mit Konvertierung und Substraktion im Calendar Java Basics - Anfänger-Themen 4
S Konvertieren von Gregorian Calendar nach Date ? Java Basics - Anfänger-Themen 6
L Gregorian Calendar Problem Java Basics - Anfänger-Themen 7
S Calendar.set Methode Java Basics - Anfänger-Themen 4
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
T Prüfung auf Existenz eines Dialogfensters Java Basics - Anfänger-Themen 5
J SVN Repository Prüfung ob leer ist Java Basics - Anfänger-Themen 23
E equals Prüfung fehlgeschlagen Java Basics - Anfänger-Themen 3
B Serial Key - Prüfung ob Software gekauft Java Basics - Anfänger-Themen 1
U Prüfung, ob Datei vollständig vorhanden Java Basics - Anfänger-Themen 8
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
T Prüfung in 2 Tagen Java Basics - Anfänger-Themen 4
B Object in Array nach Prüfung löschen Java Basics - Anfänger-Themen 13
J Prüfung einer Schleife mit Eingabefeldern Java Basics - Anfänger-Themen 3
B Prüfung auf erfolgreiche Connection? Java Basics - Anfänger-Themen 2
A ArrayList-iteration mit Prüfung auf instanceof durch switch case? Java Basics - Anfänger-Themen 13
F TicTacTo Prüfung + Ergebnisausgabe Java Basics - Anfänger-Themen 10
D Prüfung zur korrekten Ausgabe einer Methode Java Basics - Anfänger-Themen 2
O String-Prüfung: Was ist besser/schneller? Java Basics - Anfänger-Themen 15
M Prüfung beim Erzeugen eines Objektes Java Basics - Anfänger-Themen 4
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
G Prüfung ob GUI möglich? Java Basics - Anfänger-Themen 2
M Prüfung simulieren Java Basics - Anfänger-Themen 4
Semox Ganzzahlentyp- morgen Prüfung Java Basics - Anfänger-Themen 2
S Ordner prüfung Java Basics - Anfänger-Themen 2
C Parameter rückgabe nach Prüfung an Klasse/Methode Java Basics - Anfänger-Themen 2
C Datum prüfung geht nicht? Java Basics - Anfänger-Themen 9
F Objekt vom Typ Interfaces: Prüfung von welcher Unterklasse? Java Basics - Anfänger-Themen 7
W vertrackst ? brauchbare prüfung auf NULL ? Java Basics - Anfänger-Themen 7
Z Prüfung auf existenz einer Variablen Java Basics - Anfänger-Themen 4
Z Problem der Prüfung auf ein leeres Formularfeld Java Basics - Anfänger-Themen 3
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben