web-dev-qa-db-fra.com

Vacances - existe-t-il une implémentation Java?

J'aimerais savoir s'il existe un fichier jar qui pourrait faire ce qui suit:

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

S'il n'y en a pas, pourquoi? Il y a sûrement beaucoup de règles bien établies pour les vacances dans 99% des cas.

Actuellement, nous maintenons une table dans notre base de données, avec les pays + nous avons une implémentation en ce qui concerne les vacances qui ne sont pas à la même date chaque année. Nous devons ajouter à notre mise en œuvre pour chaque nouveau pays, nous avons de nouveaux clients.

Pourrions-nous faire cela plus facilement?

(S'il n'y a rien de tel dans la sphère Java, puis-je le porter depuis un autre langage?)

59
Espen Schulstad

Pour autant que je sache, rien de robuste n’existe en Java. Il est également logique que ce type d’information soit extrêmement sensible aux changements. Le codage en dur rendrait votre code potentiellement défectueux à chaque mise à jour Java, ce qui pourrait entraîner de nombreux problèmes de maintenance et de compatibilité. Actuellement, les fuseaux horaires sont codés en dur/maintenus dans Java SE et même seuls, ce qui a déjà conduit à de nombreux bugs .

Utilisez plutôt un service Web public pour cela. Par exemple. http://www.bank-holidays.com

Ce site vous informe de tous les jours où les banques (ainsi que les bourses de valeurs et les vacances scolaires dans plusieurs pays) sont fermées en raison d’événements religieux ou publics. Les principaux événements (élections, grèves annoncées, salons, festivals, manifestations sportives, etc.) sont également répertoriés.

Notre SERVICE GRATUIT vous permet de visualiser l'année civile en cours (affichage uniquement). Pour 2 euros/pays/an, notre service de paiement (cliquez sur l'icône de la carte de crédit) vous donne accès aux années civiles 2000-2070.

Et écrivez un wrapper Java autour de ça. Ou recherchez les API Java existantes, qui sont à leur tour déjà prises en charge par un service Web.

13
BalusC

J'ai écrit le Jollyday API et je suis curieux de savoir ce qui le rend si difficile. Comment puis-je l'améliorer? Ce serait génial d'avoir de vos nouvelles. Envoyez-moi un email à [email protected] si vous le souhaitez.

Au fait. Jollyday est utilisé tel que demandé par le questionneur. S'il vous plaît chercher pour vous-même.

Cordialement, Sven

P.S .: J'ai trouvé un service Web gratuit d'Ulrich Hilger qui fournit des informations détaillées sur les vacances dans le monde entier. Regardez sur api.daybase.eu

14
Sven

J'ai aussi écrit un wrapper Java autour de Ruby Holidays Gem (. Il est disponible sur Github: https://github.com/gdepourtales/holidays . Il fonctionne de manière similaire à Jollyday ( http://sourceforge.net/ projets/jollyday/ ).

4
Guy

J'ai trouvé cela intéressant:

Fournisseur de services RESTful - API de vacances

Pour les projets de nœuds - node-holidayapi

Je sais que cela n’est pas pertinent pour la question de l’implémentation Java. Mais si votre projet est RESTful (comme la plupart des projets de nos jours), cela vous donnerait une place pour commencer. ;)

3
Ashok M A

Ma recherche a mis en évidence deux résultats (en plus de ce que j'ai énuméré dans les commentaires). Le premier, l’API Holiday Client , semble être un projet mort. Le second, Jollyday , ressemble à un travail en cours très difficile, mais actif.

Quant à pourquoi il n'y a pas de bonne bibliothèque, je suis avec Tom. Je soupçonne que votre prémisse "Il y a sûrement beaucoup de règles bien établies pour les vacances dans 99% des cas" est incorrecte.

1
Pops

Je pense que vous devrez faire le travail vous-même.

Les fêtes nationales sont déterminées par les nations. Ils peuvent changer et, par définition, ne sont pas universels et ne peuvent donc pas être capturés par un algorithme.

La seule façon de les suivre est de les conserver pays par pays.

Peut-être que quelqu'un le fait déjà (peut-être un service Web), mais j'en doute, pour être honnête.

0
Willem van Rumpt

Jusqu’à présent, je n’en ai vu aucune… .. Mais ce que je pourrais vous suggérer, c’est d’essayer de vous connecter à Google Calendar Api, qui à partir de là essaie d’obtenir le calendrier des vacances dans le fil de l’agenda ou ce que vous appelez ..__ Là, traitez les données et si vous voulez, sauvegardez-les dans votre base de données . Après tout, si vous avez une connexion Internet active, vous pouvez utiliser Java pour vous connecter aux données pertinentes Même pour les autres langues, je ne pense pas que de telles méthodes directes sont disponibles.

0
C_Rance