2010-08-02 15 views
45

Ich möchte wissen, ob es aus einem jar-Datei gibt es, die Folgendes tun könnte:Feiertage - gibt es eine Java-Implementierung?

DateMidnight dateInQuestion = new DateMidnight(12,12,2000); 
DateChecker.isNationalHoliday(dateInQuestion, Locale.ITALY); 

Wenn nicht, warum? Sicher gibt es in 99% der Fälle viele Regeln für die Feiertage.

Im Moment führen wir eine Tabelle in unserer Datenbank, mit den Ländern + wir haben einige Implementierungen, wenn es um Feiertage geht, die jedes Jahr nicht an demselben Datum sind. Wir müssen unserer Implementierung hinzufügen, für jedes neue Land bekommen wir neue Kunden.

Können wir das einfacher machen?

(Wenn es so etwas in dem Java-Bereich ist, kann ich Port es aus einer anderen Sprache?)

+0

Nette Frage ;-) –

+2

Das kann dir nützlich sein: http://www.javaworld.com/javaworld/javatips/jw-javatip44.html?page=1 Es ist keine schön verpackte JAR-Datei, oder Ich hätte dies zu einem Kommentar anstatt zu einer Antwort gemacht, aber auf den letzten beiden Seiten gibt es ziemlich viel Beispielcode. – Pops

+2

Soweit ich weiß (zumindest vor Ort), werden Ferien einige Jahre vorher entschieden, basieren aber nicht unbedingt auf statischen Regeln mit vielen Ausnahmen und möglichen Anpassungen. – poke

Antwort

9

Nichts Robustes existiert in Java, soweit ich weiß. Es macht auch Sinn, diese Art von Informationen ist nämlich extrem empfindlich auf Veränderungen. Hardcoding würde Ihren Code potenziell bei jedem Java-Update beschädigen, was zu vielen Wartungs- und Kompatibilitätsproblemen führen kann. Momentan sind die Zeitzonen in Java SE hardcodiert/gepflegt und schon alleine hat das schon zu many bugs geführt.

Verwenden Sie stattdessen einen öffentlichen Webservice. Z.B. http://www.bank-holidays.com

Diese Seite informiert Sie über alle Tage, an denen Banken (sowie Börsen & Schulferien in einer Reihe von Ländern) aus religiösen oder öffentlichen Veranstaltungen geschlossen sind. Wichtige Ereignisse (Wahlen, angekündigte Streiks, Messen, Festivals, Sportveranstaltungen ...) werden ebenfalls aufgeführt.

Unser KOSTENLOSER SERVICE ermöglicht Ihnen, das aktuelle Kalenderjahr anzuzeigen (nur Ansicht). Für 2 Euro/Land/Jahr können Sie mit unserem PAY SERVICE (klicken Sie auf das Kreditkartensymbol) auf die Kalenderjahre 2000-2070 zugreifen.

Und schreiben Sie einen Java-Wrapper um das. Oder suchen Sie nach vorhandenen Java-APIs, die wiederum bereits von einem Webservice unterstützt werden.

+1

Beeindruckend. Hat einen schnellen Check gemacht, und sie haben alles für die Niederlande (mein Land) gefunden. Einschließlich der einmal alle fünf Jahre gefeiert. –

+0

Das sieht nach dem einzigen Weg aus. Natürlich ist das immer noch nicht universell, da einige Orte andere Feiertage haben oder stattdessen. Ich arbeite für eine große US-Firma und sie geben einfach einen zusätzlichen 10 schwimmenden persönlichen Tag, das ist mehr PC, da nicht jeder Weihnachten abhaben möchte. Einige Firmen schließen zwischen Weihnachten und Neujahr. –

0

Ich glaube, Sie werden die Arbeit selbst zu tun haben.

Nationale Feiertage sind bestimmt durch, na ja, Nationen. Sie können sich ändern und sind per definitionem nicht universell und können daher nicht von irgendeinem Algorithmus erfasst werden.

Der einzige Weg, um den Überblick zu behalten, ist, sie auf nationaler Ebene zu pflegen.

Vielleicht macht das schon jemand (vielleicht ein Webservice von Art), aber ich bezweifle es, um ehrlich zu sein.

+1

Ja, das ist, was ich befürchte. Am einfachsten wäre es, wenn ein Geschäft jährlich gewartet werden könnte. Sagen Sie einfach 5 Betreuer für die ganze Welt, und die Versionsnummer wird das Jahr sein. –

0

Bisher habe ich keine gesehen. Aber was ich für Sie vorschlagen könnte, ist zu versuchen, mit google calendar api zu verbinden, die von dort versuchen, den Feiertagskalender durch den Kalendervorzug oder was auch immer Sie nennen, zu erhalten. Von dort verarbeiten Sie die Daten und wenn Sie möchten, speichern Sie sie in Ihrer Datenbank. Immerhin, solange Sie eine aktive Internetverbindung haben, können Sie Java verwenden, um eine Verbindung zu den relevanten Daten Auch für andere Sprachen, glaube ich nicht, dass solche direkten Methoden zur Verfügung stehen.

1

Meine Suche hat zwei Ergebnisse (zusätzlich zu dem, was ich in den Kommentaren aufgeführt) gebracht. Die erste, die Holiday Client API, scheint ein totes Projekt zu sein.Die zweite, Jollyday, sieht aus wie eine sehr grobe, aber aktive, in Arbeit.

Wie für warum gibt es keine gute Bibliothek, ich bin mit Tom. Ich vermute, dass Ihre Prämisse "Sicherlich gibt es in 99% der Fälle viele richtig begründete Regeln für die Feiertage" ist falsch.

11

Ich habe die Jollyday API geschrieben und ich bin interessiert zu wissen, was so 'grob' darüber ist. Wie kann ich es verbessern? Es wäre schön, von dir zu hören. Schicke mir eine Email an [email protected] wenn du magst.

Übrigens. Jollyday wird genau so benutzt, wie der Fragesteller es verlangt. Bitte schau selbst.

Cheers, Sven

P. S .: Ich fand eine kostenlose Webservice von Ulrich Hilger, die Informationen detailliert weltweit Urlaub bietet. Schauen Sie sich api.daybase.eu

+2

sollten Sie einen Link zu jollyday enthalten –

+0

Funktioniert es für Android? –

+0

Ermöglicht Jollyday die Definition von Ad-hoc-Feiertagen? Im Vereinigten Königreich hatten wir einen Urlaub wegen einer königlichen Hochzeit im Jahr 2011 und dem Queen's Diamond Jubilee im Jahr 2012. Diese Feiertage finden nur hier und da statt, so dass Jollyday flexibel genug sein müsste, um dies zu berücksichtigen. Im Idealfall, ohne dass ein System neu gestartet werden muss. – mrswadge

1

fand ich diese interessant:.

RESTful Dienstleister - Holiday API

für Knoten Projekte - node-holidayapi

ich weiß es nicht auf die Frage für Java DURCHFÜHRU gefragt wird relevent ntation. Aber wenn Ihr Projekt RESTful ist (wie die meisten Projekte heutzutage), dann würden Sie damit beginnen. ;)