Für Abgabe vor Feiertagen 3 Tage für Abholung hinzuaddieren

Fa Tima

Mitglied
Hallo Leute,

ich steh noch ganz am Anfang der Programmierung und auch gleichzeitig vor einem (logischen) Problem. Für einen Kalender zur Abholung von Waren möchte ich folgendes realisieren:

Kunde gibt Kleidungsstücke an einem Freitag ab und für die Bearbeitung werden 3 Werktage (Montags bis Freitags) benötigt. Diese 3 Tage sollen jetzt an den Sonntag angehangen werden, so dass der Mittwoch als nächster Abholtag angezeigt wird. Wie könnte man so etwas schreiben, dass auch Feiertage sowohl vor, als auch nach einem Wochenende berücksichtigt werden?

Die Formeln für die Berechnung des Ostersonntags und somit auch die des Karfreitags und Ostermontags habe ich bereits, auch die für Neujahr und die restlichen Feiertage. Ich benötige die korrekte Vorgehensweise wie ich diese anwenden kann.

Bisher habe ich in der main nur folgendes stehen:

Java:
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
	    Calendar c = Calendar.getInstance();
	    Date today = new Date();
	    c.setTime(new Date()); 		
	    c.add(Calendar.DATE, 3); 	
	    String output = sdf.format(c.getTime());
	    String now = sdf.format(today);
	    System.out.println("Abgabetag: " + now);
	    System.out.println("Nächster Abholtag: " + output);

Ich hoffe ihr könnt mir helfen, hab nämlich schon so einiges dank dieses Forums dazugelernt.

Eure Tima
 
Zuletzt bearbeitet:

Supra

Bekanntes Mitglied
Moin,

ahm, ich bin mir nicht sicher, aber du kannst auf die Konstanten der Tage zugreifen und je nachdem welcher Tag ist die Tage hinzuaddieren? Sprich wenn Freitag ist rechnet er 5 Tage rauf(wochenende + die 3 Werktage)?

Meinst du sowas?
 

Fa Tima

Mitglied
Hallo Supra,

danke für deine Antwort, ganz so leicht wird es glaube ich nicht werden. Ich versuche mal am Beispiel des 1. Mai zu erklären wie ich es mir vorstelle:

Angenommen der 1. Mai fällt auf den Freitag, so müssten ja dem Donnerstag die zu addierenden Tage hinzugefügt werden, in diesem Fall die 3 Tage für die Abholung + 2 Wochenendtage.

1. Mai (Freitag), also dem Freitag die 5 Tage hinzufügen, wäre ja "kein Problem". Da aber der 1. Mai ein beweglicher Feiertag ist, stoße ich mit den wenigen Kenntnissen der Programmierung an meine Grenzen. Ich müsste es ja jetzt so schreiben, dass er jeden einzelnen Werktag nach dem 1. Mai ermittelt und dann die jeweiligen Abholtage auf diese Werktage hinzuaddiert.

Ich hoffe es ist jetzt etwas verständlicher, wenn nicht werde ich mir Mühe geben es ausführlicher zu beschreiben.

Code-Schnipsel wären von Vorteil, da ich wie ich eingangs schon schrieb wirklich noch am Anfang stehe.

Vielen lieben Dank

Eure Tima
 

NoXiD

Bekanntes Mitglied
du kannst dein datum so formatieren, dass dir der Tag mitausgegeben wird. Oder geht es dir um die Feiertage?
 
Zuletzt bearbeitet:

Supra

Bekanntes Mitglied
Hmm, du hast recht. Leider würde mir nichts leichteres einfallen, als mit einer switch case anweisung, aber das willst du ja nicht.
Was anderes fällt mir leider auch nicht ein.
 

Supra

Bekanntes Mitglied
Oder, du rechnest solange einen Tag hoch bis es kein Wochenende oder feiertag ist, zum schluss gibst du den Tag zurück.
Kommt sowas dem ähnlich was du meinst bzw. brauchst?
 

Fa Tima

Mitglied
Ich müsste ja im Grunde nur vom letzten Werktag die zu addierenden Tage hinzufügen. Also eine Methode schreiben, die die Feiertage außer Acht lässt und nur die reinen Werktage anzeigt und von dort an die Tage addiert. Ich hab schon viel ausprobiert, aber ich komm einfach nicht weiter.

Danke für die Hilfe ihr lieben

Eure Tima
 

Supra

Bekanntes Mitglied
So hat jeder seine eigene Lösung :), klar das könnte natürlich auch gehen. Nur leider weis ich selber nicht wie Feiertage außer acht gelassen werden können :(. Wie sieht dein Versuch denn bis jetzt aus?
 

Fa Tima

Mitglied
So hat jeder seine eigene Lösung :), klar das könnte natürlich auch gehen. Nur leider weis ich selber nicht wie Feiertage außer acht gelassen werden können :(. Wie sieht dein Versuch denn bis jetzt aus?

Ja das stimmt. Nun ja, meine Lösungsansätze hab ich völlig verworfen weil die nicht funktionierten. Ich bin wieder da angelangt wo ich zu Beginn war, und das ist bei dem wenigen Code den ich eingangs gepostet hab. :oops:

Gruß
Tima
 

Supra

Bekanntes Mitglied
Das schwierige ist die Feiertage sind im Java nicht gekenzeichnet, da kann ich dir leider auch nicht helfen. Du müsstest die wohl selber prüfen bzw. ermitteln.

Tut mir leid, ich hoffe jemand anderes weiß das.

Gruß
Supra
 
Zuletzt bearbeitet:

Natac

Bekanntes Mitglied
Als erstes würde ich eine Methode "istFeiertagOderWE(Calendar calendar)" schreiben. Als nächstes so lange hochzählen, bis ich 3x ein "false" bekommen habe:

Java:
Calendar date = Calendar.getInstance();
int count = 0;
while(count < 3){
  date.add(Calendar.DAY_OF_YEAR, +1);// Einen Tag hochzählen
  
  if(!istFeiertagOderWE(date)) count++;
}

System.out.println("Abholung möglich: "+date.getTime());
Bleibt nur noch die Methode [c]istFeiertagOderWE(Calendar calendar)[/c] zu implementieren, aber die hast du ja, sagst du.
 
Zuletzt bearbeitet:

Fa Tima

Mitglied
Bleibt nur noch die Methode [c]istFeiertagOderWE(Calendar calendar)[/c] zu implementieren, aber die hast du ja, sagst du.

Vielen lieben Dank Natac, das ist doch mal ein Ansatz. Die Methode istFeiertagOderWE(Calendar calendar) hab ich noch nicht. Ich hab wie gesagt alles verworfen was ich bis dato geschrieben habe um mich nicht noch weiter selbst zu verwirren.

Ich habe lediglich in einer eingebunden Klasse feiertagsBerechnung.java die Berechnungen für den Ostersonntag (somit auch Karfreitag und Ostermontag), die Formeln für den 1. Mai, Neujahr, 1. und 2. Weihnachtstag usw. ...

Beispiele:

Java:
	public void NewYearsDay (int year){
		// 1. Januar
		int month = 0; // Januar
		Calendar cal = Calendar.getInstance();
		cal.set(year, month, 1);
		return;
	}
	
	public static Calendar  MayDay (int year){
	  // 1. Mai
	  int month = 4; // Mai
	  Calendar cal = Calendar.getInstance();
	  cal.set(year, month, 1);
	  return cal;
	}

Gruß
Tima
 

Natac

Bekanntes Mitglied
Das du die Methode so nicht hast, war mir schon klar. Aber du hast ja alles, um die Methode zu füllen und dann einen Wahrheitswert zurückzugeben.

Ich würde die Methode in kleinere aufteilen und diese nach und nach implementieren:
Java:
boolean istFeiertagOderWE(Calendar date){
 return istWE(date) || istNeujahr(date) || ist1Mai(date) || ... ; 
// Diese Zeile kannst du ja erstmal zu Ende schreiben ohne die Methoden zu implementieren. Dann weißt du erstmal, was du alles prüfen musst
}

boolean istWE(Calendar date){
 // Checken ob WE 
}

boolean istNeujahr(Calendar date){
 // Checken ob 1.Jan
}

boolean ist1Mai(Calendar date){
 // Checken ob 1.Mai
}

// usw...
 

HarleyDavidson

Bekanntes Mitglied
Bei Feiertagen spielt auch immer die Frage mit, in welchem Bundesland wird die Software verwendet?
Feiertage in BW

dann würde ich die Feiertage zum Beispiel in eine Textdatei oder XML speichern, die beim Starten einlesen
und dann immer (zum Beispiel als ArrayList<Date> oder so) bei jeder Prüfung zu Rate ziehen.
Das Praktische daran: Falls in den "Ferien" ebenfalls geschlossen ist, können diese Tage hier ebenfalls eingetragen werden und die Berechnung funktioniert auch hier korrekt.

Zu den Wochentagen: Die Klasse java.util.Calendar und java.util.Date kann auch mit Wochentagen. Das sollte also auch hier kein Problem darstellen.
 

turtle

Top Contributor
Ich gebe zu Protokoll, auch einmal in JollyDayzu schauen, weil darin bereits etliche Feiertage hinterlegt sind.
Hier mal ein kleines Beispiel für Feiertage 2013 in Deutschland.

Java:
		URL resource = getClass().getClassLoader().getResource(
				"holidays/Holidays_de.xml");
		HolidayManager holidayManager = HolidayManager.getInstance(resource);
		Set<Holiday> holidays = holidayManager.getHolidays(2013, "de");
		for (Holiday holiday : holidays) {
			System.out.println(holiday);
		}
		// 2013-05-09 (Christi Himmelfahrt)
		// 2013-04-01 (Ostermontag)
		// 2013-03-31 (Ostern)
		// 2013-03-29 (Karfreitag)
		// 2013-05-19 (Pfingssonntag)
		// 2013-12-26 (Stephanstag)
		// 2013-10-03 (Tag der Wiedervereinigung)
		// 2013-05-20 (Pfingstmontag)
		// 2013-05-01 (Tag der Arbeit)
		// 2013-12-25 (Weihnachten)
		// 2013-01-01 (Neujahr)
	}
Für Urlaubstage ist vielleicht ObjectLabKit ganz gut.
 

Fa Tima

Mitglied
Danke ihr lieben, wirklich tolles Forum :toll:

ich werde es erst einmal so versuchen umzusetzen, wie Natac es angeraten hat, ist für mich momentan die am einfachsten zu realisierende Methode.

@HarleyDavidson,

Danke für den Hinweis, ich wollte für mein Projekt erst einmal nur die bundeseinheitlichen Feiertage verwenden. Wenn ich sicherer bin in Java und der Programmierung im Allgemeinen, dann werde ich mich natürlich an andere Möglichkeiten heranwagen.

@turtle,

auch dir vielen Dank, werde mich wie geschrieben später mal mit den verschiedenen Möglichkeiten und den verschiedenen einzubindenden Bibliotheken befassen. Momentan reichen mir die Funktionen aus java.util.Calendar völlig aus, sonst werde ich noch überfordert :)

Gruß
Tima
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
B Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
T getMethode für ein Array Java Basics - Anfänger-Themen 2
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
N Api nur für Textdatein (.txt) Java Basics - Anfänger-Themen 2
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
E Mittelquadratmethode für Hexadezimalzahlen Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
L Konzept für Quiz Java Basics - Anfänger-Themen 33
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
L loop für Namen Java Basics - Anfänger-Themen 11
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
Kanaska Datentyp für Zahlenbereiche Java Basics - Anfänger-Themen 7
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12
lilrack UML Diagramm für Parkplatzverwaltung Java Basics - Anfänger-Themen 8
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
T Start-Activity für Java Maven Web-Anwendung festlegen Java Basics - Anfänger-Themen 2
T Alternative für switch case Java Basics - Anfänger-Themen 1
P Ressourcen für JSON & API Informationen? Java Basics - Anfänger-Themen 1
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
L Compiler-Fehler SupressWarning für clone() Java Basics - Anfänger-Themen 6
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
D Ampel für Mitarbeiter zum An-/Abwesend zeigen Java Basics - Anfänger-Themen 28
T Wahrscheinlichkeiten für Slot Machine Java Basics - Anfänger-Themen 13
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
M Code nur für Cracks? Crack the Passwort Übung Java Basics - Anfänger-Themen 7
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
A Überprüfung für unentschieden in TicTacToe Java Basics - Anfänger-Themen 10
L Best Practice Code Refactoring für Methoden mit fast gleicher Aufbau Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben