jollyday: prüfen, ob Datum = Feiertag

chrissy

Bekanntes Mitglied
Hallo,

ich möchte gerne prüfen, ob ein Tag, in einem bestimmten Land ein Feiertag ist. Dabei bin ich im Netz auf Jollyday gestossen.
Nun gibt es dort eigentlich auch die Möglichkeit mit isHoliday ein Datum auf Feiertage zu überprüfen.
Ich habe folgenden Code, der einfach erstmal nur alle Feiertage für Deutschland / Ba-Wü ausgibt und am Ende ein Datum auf Feiertag überprüft.
Das Datum wird auch als Feiertag aufgelistet, allerdings wird immer "false" ausgegeben. Wenn ich mit isHoliday überprüfe.

Code:
LocalDate testDate = new LocalDate(2011, 12, 25);
    
HolidayManager manager = HolidayManager.getInstance(HolidayCalendar.GERMANY);
    
Set<Holiday> holidays = manager.getHolidays(2011, "bw");
for(Holiday h : holidays)
{
    System.out.println(h.getDate() + " " + h.getDescription());
}  
    
System.out.println(manager.isHoliday(testDate, "bw"));

Kennt jemand vielleicht dieses Package und kann mir weiterhelfen???

Danke
chrissy
 

MarderFahrer

Gesperrter Benutzer
Meine erste Frage wäre, was genau ist testDate? Also die Klasse LocalDate? Denn was ich von der Klasse HolidayManager gesehen habe, benötigt die Methode isHoliday() als ersten Parameter ein normales Objekt der Klasse java/util/calendar.

Mein erster Tip würde also in die Richtung gehen, dass der Manager immer false zurückgibt, weil er mit testDate nicht umgehen kann. Warum auch immer. Man könnte einmal den Manager testen, indem man ihm ein "Original Calendar Objekt" übergibt um zu sehen, ob damit die gewünschte Ausgabe erzielt wird.
 

chrissy

Bekanntes Mitglied
Hallo MarderFahrer,

das stimmt so nicht ganz ... der HolidayManager erwartet bei isHoliday ein Calendar-Object ODER ein LocalDate.
Code:
public boolean isHoliday(Calendar c,  String... args)

Calls isHoliday with JODA time object.

See Also:
        Manager.isHoliday(LocalDate c, String... args)

public boolean isHoliday(org.joda.time.LocalDate c, String... args)

Show if the requested date is a holiday.

Parameters:
        c - The potential holiday.
        args - Hierarchy to request the holidays for. i.e. args = {'ny'} -> New York holidays 
Returns:
        is a holiday in the state/region

Ich habe nun aber mal sicherheitshalber mit einem Calendar-Object getestet, wobei das Ergebnis das gleiche ist, es wird immer "false" zurückgeliefert.

Weitere Ideen?

Danke
 

turtle

Top Contributor
Gibt bei mir true
Java:
		Calendar testDate = GregorianCalendar.getInstance();
		testDate.set(2011, 11, 25);

		HolidayManager manager = HolidayManager
				.getInstance(HolidayCalendar.GERMANY);

		Set<Holiday> holidays = manager.getHolidays(2011, "bw");
		for (Holiday h : holidays) {
			System.out.println(h.getDate() + " " + h.getDescription());
		}
		System.out.println(manager.isHoliday(testDate, "bw"));
 

chrissy

Bekanntes Mitglied
Hallo, danke für die vielen Hinweise. Der Code von turtle funktioniert bei mir auch. Allerdings stellt sich mir noch die Frage, warum mein LocalDate nicht funktioniert.
Da an meine Funktion ein LocalDate übergeben wird, möchte ich dieses auch ohne großes umwandeln nutzen.
Ich habe nun mal überpüft, wie das beim LocalDate mit dem Monat ist ...
Code:
LocalDate testDate1 = new LocalDate(2011, 12, 25);
System.out.println(testDate1.monthOfYear().getAsText());

und die Ausgabe ist "Dezember", also sollte ja eigentlich beim isHoliday "true" zurückkommen. Wenn dazu vielleicht noch jemand eine Idee hat, wäre das nett, ansonsten muss ich halt mein LocalDate in ein Calendar umwandeln.

Danke
chrissy
 

MarderFahrer

Gesperrter Benutzer
Ich denke, ich weiß jetzt den Grund. Intern wird das Calendar Objekt in ein LocalDate Objekt gewandelt. Dummerweise wird dort aber anhand des Jahres entweder Julian Chronology oder Gregorian Chronology benutzt beim erstellen des neuen LocalDates.

Und wenn man sich den Default Konstruktor von LocalDate anschaut, so sieht man, dass per default "ISOChronology" beim erstellen des LocalDates genutzt wird. Dieser Unterschied ist der Grund, warum in deinem Fall "false" zurückgegeben wird.

Das lässt sich ganz leicht testen, indem du zusätzlich die Chronology vorgibst. Also ungefähr so:
Java:
LocalDate testDate = new LocalDate(2011, 12, 25, GregorianChronology.getInstance());

Das ist der identische Aufruf aus deinem ursprünlichen Code, nur mit einem zusätzlichen Parameter erweitert. Und damit sollte dann auch "true" zurückgegeben werden.

Das Problem ist also, dass in der Klasse LocalDate per Default eine andere Chronology benutzt wird als hinterher in der Klasse des HolidayManagers gebraucht wird zur überprüfung des date Objektes.
 

chrissy

Bekanntes Mitglied
Hallo Marderfahrer,

danke für deine gründliche Recherche, soweit bin ich gar nicht vorgedrungen ...
Jetzt funktioniert's.

chrissy
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
W Classpath Reflexion - Prüfen ob man auf ein Feld ändern kann Allgemeine Java-Themen 2
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
J Mit Lombok Integer Range prüfen Allgemeine Java-Themen 6
S Prüfen ob Textfile existiert Allgemeine Java-Themen 9
E Programm auf Installation prüfen Allgemeine Java-Themen 1
S Binärbaum prüfen Allgemeine Java-Themen 0
L String auf zahlenwert prüfen Allgemeine Java-Themen 13
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
Z Java Exceptions - Auf leeres Feld prüfen Allgemeine Java-Themen 10
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
M .jar nach Datei prüfen Allgemeine Java-Themen 2
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
Y Prüfen ob ein Graph immer einen von mehren Enden erreicht Allgemeine Java-Themen 4
O Prüfen ob String eine Zahl mit maximal 2 Nachkommastellen ist Allgemeine Java-Themen 4
M datei aufruf prüfen Allgemeine Java-Themen 9
D Best Practice Prüfen ob jar nachträglich geändert wurde Allgemeine Java-Themen 2
B Dateien prüfen auf Gleichheit Allgemeine Java-Themen 5
H String auf Zahlen prüfen Allgemeine Java-Themen 4
T auf Valides Datum prüfen Allgemeine Java-Themen 12
N Java Version Prüfen lassen Allgemeine Java-Themen 11
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
O Variablen Originalname einer übergebenen Variable prüfen Allgemeine Java-Themen 9
T Methoden Zahlenpalindrom laufzeitoptimiert prüfen Allgemeine Java-Themen 4
U ResourceBundles auf vollständigkeit prüfen Allgemeine Java-Themen 2
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
E Prüfen ob Fenster mit Namen offen ist Allgemeine Java-Themen 2
M Binärbaum auf vollständigkeit prüfen Allgemeine Java-Themen 4
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
N List auf null prüfen Allgemeine Java-Themen 2
B generischen Typ prüfen Allgemeine Java-Themen 7
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
N Prüfen ob Methode ausgeführt wird und diese ggf. abbrechen? Allgemeine Java-Themen 8
B Prüfen ob ein Programm gestartet wurde Allgemeine Java-Themen 23
N ArrayList nach Reihenfolge prüfen Allgemeine Java-Themen 2
C Prüfen auf Zahl und 6 stellig fehlerhaft? warum? Allgemeine Java-Themen 7
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H Prüfen, ob doppete Werte in int-Array vorhanden sind Allgemeine Java-Themen 16
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
S Prüfen auf Hex-Wert fester Länge! Allgemeine Java-Themen 5
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K Zip dateien prüfen Allgemeine Java-Themen 3
G ZIP Archiv auf Konsistenz prüfen Allgemeine Java-Themen 2
T Parameter einer Klasse auf Interface prüfen Allgemeine Java-Themen 6
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
P Sound Buffer prüfen Allgemeine Java-Themen 12
B PrintService - Wie prüfen ob Drucker online ist? Allgemeine Java-Themen 2
A Textfeld prüfen, ob ein Punkt eingegeben wurde Allgemeine Java-Themen 8
flashfactor Prüfen ob bereits eine Instanz gestartet ist Allgemeine Java-Themen 2
C Prüfen, ob eine Methode eine andere überschreibt! WIE? Allgemeine Java-Themen 8
T Prüfen, ob Char ein Quantifier ist Allgemeine Java-Themen 6
N Prüfen ob Objekt in Liste enthalten ist Allgemeine Java-Themen 17
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
J Mit Patternmatching einen Satz prüfen Allgemeine Java-Themen 12
G Prüfen ob Ziffern einer Zahl pandigital sind? Allgemeine Java-Themen 15
M Prüfen ob Variable vorhanden / initalisiert ist Allgemeine Java-Themen 4
J Wie prüfen ob eine Datei vom OS fertig geschrieben wurde? Allgemeine Java-Themen 6
TheJavaKid Zeile auf existenz von String prüfen. Allgemeine Java-Themen 19
A Weshalb man Parameter auf Gültigkeit prüfen sollte Allgemeine Java-Themen 6
N Prüfen ob ein String in einen Integer umgewandelt werden kan Allgemeine Java-Themen 4
O String auf zahlen prüfen (java 1.3) Allgemeine Java-Themen 4
G Datei Zugriffsrechte prüfen Allgemeine Java-Themen 2
Linad Bilder auf Gleichheit prüfen Allgemeine Java-Themen 6
G ResultSet auf Inhalt prüfen? Allgemeine Java-Themen 2
H Prüfen, ob es sich um ein Integer handelt Allgemeine Java-Themen 4
C String str prüfen Allgemeine Java-Themen 3
H Prüfen ob ein String grösser als 4 Zeichen ist Allgemeine Java-Themen 3
F Prüfen, ob Windows oder UNIX Allgemeine Java-Themen 2
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
W Datum anzeigen Allgemeine Java-Themen 10
MiMa Datum von zweistelliger Jahreszahl auf 4 Stellen aufrüsten? Allgemeine Java-Themen 4
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Hatsi09 Heutiges Datum Allgemeine Java-Themen 3
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
MiMa Das Datum Format ist mir unbekannt. Allgemeine Java-Themen 1
G Datum letzte 7 tage Allgemeine Java-Themen 6
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben