2010-08-02 3 views
45

Я хотел бы знать, если есть баночка-файл, что там можно было сделать следующее:Праздники - есть ли реализация Java?

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

Если есть нет, то почему? Конечно, в 99% случаев существует множество правильных правил для праздников.

Сейчас мы используем таблицу в нашей базе данных, а страны + у нас есть реализация, когда дело доходит до праздников, которые не относятся к одной и той же дате каждый год. Мы должны добавить к нашей реализации для каждой новой страны, в которой мы получаем новых клиентов.

Можем ли мы сделать это более простым способом?

(Если нет такой вещи в Java сфере, могу ли я порт его с какой-либо другой язык?)

+0

Хороший вопрос ;-) –

+2

Это может быть полезно вам: http://www.javaworld.com/javaworld/javatips/jw-javatip44.html?page=1 Это не хорошо упакованный JAR-файл, или Я бы сделал комментарий вместо ответа, но на последних двух страницах есть довольно много примеров кода. – Pops

+2

Насколько я знаю, большинство (по крайней мере местных) праздников решаются несколько лет назад, но не обязательно основаны на статических правилах с большим количеством исключений и возможных корректировок. – poke

ответ

9

Ничего надежного не существует на Java, насколько я знаю. Это также имеет смысл, такая информация чрезвычайно чувствительна к изменениям. Hardcoding это сделает ваш код потенциально ломающимся при каждом обновлении Java, что может привести к большому количеству проблем, связанных с обслуживанием и совместимостью. В настоящее время в самом лучшем случае временные интервалы жестко закодированы/сохранены в Java SE и даже одни, что уже привело к many bugs.

Скорее используйте для этого общедоступный веб-сервис. Например. http://www.bank-holidays.com

Этот сайт информирует вас обо всех те дней, когда банки (а также фондовая биржа & школьных каникул в ряде стран) закрыты из-за религиозные или общественные мероприятия. Также перечислены основные события (выборы, объявленные забастовки, ярмарки, фестивали, спортивные события ...).

Наша БЕСПЛАТНАЯ СЛУЖБА позволяет просмотреть текущий календарный год (только просмотр). В течение 2 евро/страна/год наша PAY SERVICE (щелкните значок кредитной карты) дает вам доступ к календарным годам 2000-2070.

И напишите обертку Java вокруг этого. Или ищите существующие Java API, которые, в свою очередь, уже поддерживаются веб-сервисом.

+1

Впечатляет. Быстрая проверка, и они нашли все для Нидерландов (моей страны). В том числе один отмечается один раз в пять лет. –

+0

Это выглядит как единственный способ пойти. Конечно, это еще не универсально, потому что в некоторых местах могут быть другие праздники в дополнение или вместо этого. Я работаю в большой американской компании, и они просто дают дополнительные 10 плавающих личных дней, это больше ПК, так как не все могут хотеть Рождество. Некоторые компании близки к Рождеству и Новому Году. –

0

Я думаю, что вы должны сделать работу самостоятельно.

Национальные праздники определяются, ну, нациями. Они могут меняться и по определению не универсальны и поэтому не могут быть захвачены каким-либо алгоритмом.

Единственный способ отслеживать их - поддерживать их на основе каждой страны.

Возможно, кто-то на самом деле уже делает это (может быть, веб-сервис), но я сомневаюсь в этом, если честно.

+1

Да, это то, чего я боюсь. Проще всего было бы, если бы хранилище можно было поддерживать ежегодно. Просто скажите, 5 поддерживающих для всего мира, и номер версии будет годом. –

0

До сих пор я никого не видел. Но то, что я мог бы предложить для u, - это попытаться установить связь с Google Calendar api, который оттуда пытается получить календарь праздников через календарный канал или что-то другое, назовите его. Оттуда обработайте данные, а если хотите, сохраните их в своей базе данных. После того, как у вас есть активное подключение к Интернету, вы можете использовать java для подключения к соответствующим данным. Даже для других языков я не думаю, что такие прямые методы доступны.

1

Мой поиск привел два результата (в дополнение к тому, что я указал в комментариях). Первый, Holiday Client API, кажется, мертвый проект.Второй, Jollyday, выглядит очень грубым, но активным, незавершенным.

Что касается Почему нет хорошей библиотеки, я с Томом. Я подозреваю, что ваше предположение «Конечно, есть много правильных правил для праздников в 99% случаев» неверно.

11

Я написал API Jollyday, и мне интересно узнать, что это такое «грубо». Как я могу улучшить его? Было бы здорово услышать от вас. Пришлите мне письмо по электронной почте [email protected], если хотите.

Кстати. Jollyday используется только так, как спрашивает его спрашивающий. Посмотрите сами.

Cheers, Свен

P.S .: Я нашел свободный WebService от Ulrich Хильгером, который содержит подробную информацию по всему миру праздник. Посмотрите на api.daybase.eu

+2

вы должны включить ссылку на jollyday –

+0

Работает ли она на Android? –

+0

Может ли Jollyday разрешать специальные праздники adhoc? В Великобритании у нас был праздник из-за королевской свадьбы в 2011 году и Queen's Diamond Jubilee в 2012 году. Эти праздники случаются здесь и там, поэтому Джоллидей должен быть достаточно гибким, чтобы удовлетворить это. В идеале, без необходимости перезапуска системы. – mrswadge

1

Я нашел этот интересный:.

RESTful поставщик услуг - Holiday API

для проектов Node - node-holidayapi

Я знаю, что это не Релевент на вопрос, заданный на Java impleme ntation. Но если ваш проект RESTful (как и большинство проектов в настоящее время), это даст вам место для начала. ;)

Смежные вопросы