2010-08-02 2 views
45

Je voudrais savoir s'il y a un pot-file là-bas qui pourrait faire ce qui suit:Vacances - existe-t-il une implémentation Java?

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

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

En ce moment nous maintenons une table dans notre base de données, avec les pays + nous avons quelques implémentations quand il s'agit de vacances qui ne sont pas à la même date chaque année. Nous devons ajouter à notre implémentation pour chaque nouveau pays, nous obtenons de nouveaux clients.

Pourrions-nous faire cela plus facilement?

(S'il n'y a pas une telle chose dans la sphère java, je peux le porter d'une autre langue?)

+0

Belle question ;-) –

+2

Cela peut vous être utile: http://www.javaworld.com/javaworld/javatips/jw-javatip44.html?page=1 Ce n'est pas un fichier JAR joliment emballé, ou J'aurais fait un commentaire plutôt qu'une réponse, mais il y a pas mal de code sur les deux dernières pages. – Pops

+2

Pour autant que je sache, la plupart des vacances (locales au moins) sont décidées quelques années auparavant, mais ne sont pas nécessairement basées sur des règles statiques avec beaucoup d'exceptions et d'ajustements possibles. – poke

Répondre

9

Rien de robuste n'existe en Java pour autant que je sache. Il est également logique, ce type d'information est 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, au plus haut niveau, les fuseaux horaires sont codés en dur/maintenus dans Java SE et même seuls, qui ont déjà conduit à many 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 la bourse & vacances scolaires dans plusieurs pays) sont fermés en raison d'événements religieux ou publics. Les événements majeurs (élections, grèves annoncées, salons, festivals, manifestations sportives ...) sont également répertoriés.

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

Et d'écrire un wrapper Java autour de cela. Ou recherchez des API Java existantes qui sont à leur tour déjà supportées par un service web.

+1

Impressionnant. J'ai fait une vérification rapide, et ils ont tout trouvé pour les Pays-Bas (mon pays). Y compris celui célébré une fois tous les cinq ans. –

+0

Cela ressemble à la seule façon de faire. Bien sûr, ce n'est pas encore universel en ce que certains endroits pourraient avoir d'autres vacances en plus ou à la place. Je travaille pour une grande entreprise américaine et ils donnent tout simplement 10 jours personnels flottants supplémentaires, c'est plus de PC, car tout le monde ne veut pas de Noël. Certaines entreprises ferment entre Noël et le Nouvel An. –

0

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

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

La seule façon de les suivre est de les maintenir par nation.

Peut-être que quelqu'un fait déjà cela (peut-être un service web de toutes sortes), mais j'en doute, pour être honnête.

+1

Oui, c'est ce que je crains. Le plus simple serait si un magasin pouvait être entretenu chaque année. Il suffit de dire 5 mainteneurs pour le monde entier, et le numéro de version sera l'année. –

0

Jusqu'à présent, j'en ai vu. Mais ce que je pourrais suggérer pour vous, c'est d'essayer de créer un lien avec google calendar api, qui, à partir de là, essaie d'obtenir le calendrier de vacances à travers le flux du calendrier ou quoi que ce soit. À partir de là, traitez les données et si vous le souhaitez, enregistrez-les dans votre base de données. Après tout, tant que vous avez une connexion Internet active, vous pouvez utiliser java pour vous connecter aux données pertinentes Même pour d'autres langues, je ne pense pas que de telles méthodes directes sont disponibles.

1

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

Comme pour pourquoi il n'y a pas de bonne bibliothèque, je suis avec Tom. Je soupçonne que votre prémisse "Sûrement il y a beaucoup de règles correctement fondées pour les vacances dans 99% des cas" est incorrecte.

11

J'ai écrit l'API Jollyday et je suis curieux de savoir ce qu'il en est. Comment puis-je l'améliorer? Cela serait génial d'avoir de vos nouvelles. Envoyez-moi un email à [email protected] si vous le souhaitez. Par ailleurs, en passant,

Jollyday est utilisé juste comme le questionneur le demande. S'il te plaît, cherche toi-même.

Cheers, Sven

P.S .: Je trouve un webservice sans Ulrich Hilger, qui fournit des informations détaillées dans le monde entier vacances. Regardez api.daybase.eu

+2

vous devriez inclure un lien vers jollyday –

+0

Est-ce que cela fonctionne pour Android? –

+0

Jollyday permet-il de définir des jours fériés ad hoc? Au Royaume-Uni, nous avons eu des vacances en raison d'un mariage royal en 2011 et du jubilé de diamant de la reine en 2012. Ces vacances se produisent seulement ici et là, alors Jollyday devrait être assez flexible pour répondre à cela. Idéalement, sans avoir besoin de redémarrer un système. – mrswadge

1

Je trouve cela intéressant.

fournisseur de services RESTful - Holiday API

pour les projets Node - node-holidayapi

Je sais que ce ne relevent à la question posée pour Java EXÉCUTIO ntation. Mais si votre projet est RESTful (comme la plupart des projets de nos jours), alors cela vous donnera un endroit pour commencer. ;)

Questions connexes