2010-08-02 21 views
45

Me gustaría saber si hay un fichero-jar por ahí que podría hacer lo siguiente:Vacaciones: ¿hay una implementación de Java?

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

Si no es así, ¿por qué? Seguramente hay muchas reglas basadas en las vacaciones en el 99% de los casos.

Ahora estamos manteniendo una tabla en nuestra base de datos, con los países + tenemos alguna implementación cuando se trata de vacaciones que no están en la misma fecha todos los años. Tenemos que agregar a nuestra implementación para cada nuevo país que obtengamos nuevos clientes.

¿Podríamos hacer esto de una manera más fácil?

(Si no hay tal cosa en la esfera de Java, puede puerto I de algún otro idioma?)

+0

Niza pregunta ;-) –

+2

Esto puede ser útil para usted: http://www.javaworld.com/javaworld/javatips/jw-javatip44.html?page=1 No es un archivo JAR bien envuelto, o Habría hecho un comentario en lugar de una respuesta, pero hay bastante código de muestra en las últimas dos páginas. – Pops

+2

Hasta donde yo sé, la mayoría de las vacaciones (locales) se deciden unos años antes, pero no necesariamente se basan en reglas estáticas con muchas excepciones y posibles ajustes. – poke

Respuesta

9

Por lo que sé, en Java no existe nada sólido. También tiene sentido, este tipo de información es especialmente sensible a los cambios. La codificación rígida haría que su código potencialmente se rompa en cada actualización de Java, lo que puede ocasionar muchos problemas de mantenimiento y compatibilidad. Actualmente, en la prueba más alta, las zonas horarias están codificadas/mantenidas en Java SE e incluso, por sí solas, ya han llevado al many bugs.

Bastante utilizar un servicio web público para eso. P.ej. http://www.bank-holidays.com

Este sitio le informa de todos los días en que los bancos (así como la Bolsa de & vacaciones escolares en varios países) están cerradas debido a religiosas o nacionales. Los principales eventos (elecciones, huelgas anunciadas, ferias comerciales, festivales, eventos deportivos ...) también se enumeran.

Nuestro SERVICIO GRATUITO le permite ver el año calendario actual (solo vista). Por 2 euros/país/año, nuestro SERVICIO DE PAGO (haga clic en el icono de la tarjeta de crédito) le da acceso a los años calendario 2000-2070.

Y escriba un envoltorio Java alrededor de eso. O busque API Java existentes que a su vez ya están respaldadas por un servicio web.

+1

Impresionante. Hice un chequeo rápido, y encontraron todo para los Países Bajos (mi país). Incluyendo el que se celebra una vez cada cinco años. –

+0

Parece la única manera de hacerlo. Por supuesto, esto aún no es universal en el sentido de que algunos lugares pueden tener otras vacaciones además o en su lugar. Trabajo para una gran empresa de EE. UU. Y ellos simplemente dan 10 días personales flotantes adicionales, esto es más PC, ya que no todo el mundo querría tener la Navidad libre. Algunas compañías cierran entre Navidad y Año Nuevo. –

0

creo que tendrá que hacer el trabajo usted mismo.

Las fiestas nacionales están determinadas por, bueno, las naciones. Pueden cambiar y, por definición, no son universales y, por lo tanto, no pueden ser capturados por algún algoritmo.

La única manera de hacer un seguimiento de ellos, es mantenerlos por país.

Quizás alguien realmente ya lo haga (tal vez un servicio web de algún tipo), pero lo dudo, para ser sincero.

+1

Sí, esto es lo que temo. Lo más fácil sería si una tienda se pudiera mantener anualmente. Solo tiene que decir 5 mantenedores para todo el mundo, y el número de versión será el año. –

0

Hasta ahora he visto alguna. Pero lo que podría sugerirte es intentar enlazar con la API de Google, que a partir de allí intentas obtener el calendario de vacaciones a través del calendario o lo que sea que llames. A partir de ahí, procese los datos y, si lo desea, guárdelos en su base de datos. Después de todo, siempre que tenga una conexión a Internet activa, puede usar Java para conectarse a los datos relevantes Incluso para otros idiomas, no creo que tales métodos directos estén disponibles.

1

Mi búsqueda arrojó dos resultados (además de lo que enumeré en los comentarios). El primero, el Holiday Client API, parece ser un proyecto muerto.El segundo, Jollyday, parece un trabajo en progreso muy difícil pero activo.

En cuanto a por qué no hay una buena biblioteca, estoy con Tom. Sospecho que su premisa "Seguramente hay muchas reglas basadas en las vacaciones en el 99% de los casos" es incorrecta.

11

He escrito la API Jollyday y estoy interesado en saber qué es tan "rudo" al respecto. ¿Cómo puedo mejorarlo? Sería genial saber de usted. Envíame un correo electrónico a [email protected] si quieres.

Por cierto. Jollyday se usa tal como lo solicita el interrogador. Por favor, búscalo tú mismo.

Saludos, Sven

P.S .: He encontrado un servicio web libre de Ulrich Hilger que proporciona información detallada de vacaciones en todo el mundo. Mira api.daybase.eu

+2

debe incluir un enlace a jollyday –

+0

¿Funciona para Android? –

+0

¿Jollyday permite definir días festivos adhoc? En el Reino Unido pasamos unas vacaciones por una boda real en 2011 y el Queen's Diamond Jubilee en 2012. Estas vacaciones solo ocurren aquí y allá, por lo que Jollyday tendría que ser lo suficientemente flexible para atender esto. Idealmente, sin necesidad de reiniciar un sistema. – mrswadge

1

me ha encontrado interesante:.

proveedor de servicios REST - Holiday API

para proyectos nodo - node-holidayapi

sé que no es relevante a la pregunta formulada por EJECUCIÓ Java ntation. Pero si su proyecto es RESTful (como la mayoría de los proyectos hoy en día), entonces esto le daría un lugar para comenzar. ;)

Cuestiones relacionadas