private static void newZealand(List<LocalDate> holidays, int year) { LocalDate newYear = bumpToMon(date(year, 1, 1)); holidays.add(newYear); holidays.add(bumpToMon(newYear.plusDays(1))); holidays.add(bumpToMon(date(year, 2, 6))); } else { holidays.add(date(year, 2, 6)); holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); holidays.add(bumpToMon(date(year, 4, 25))); } else { holidays.add(date(year, 4, 25)); holidays.add(first(year, 6).with(firstInMonth(MONDAY))); holidays.add(first(year, 10).with(dayOfWeekInMonth(4, MONDAY))); holidays.add(christmasBumpedSatSun(year)); holidays.add(boxingDayBumpedSatSun(year));
addDateWithHungarianBridging(date(year, 1, 1), -1, 1, holidays, workDays); addDateWithHungarianBridging(date(year, 3, 15), -2, 1, holidays, workDays); if (year >= 2017) { holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); addDateWithHungarianBridging(date(year, 5, 1), 0, 1, holidays, workDays); holidays.add(easter(year).plusDays(50)); addDateWithHungarianBridging(date(year, 8, 20), 0, -2, holidays, workDays); addDateWithHungarianBridging(date(year, 10, 23), 0, -1, holidays, workDays); addDateWithHungarianBridging(date(year, 11, 1), -3, 1, holidays, workDays); holidays.add(date(year, 12, 25)); holidays.add(date(year, 12, 26)); if (date(year, 12, 25).getDayOfWeek() == TUESDAY) { holidays.add(date(year, 12, 24)); workDays.add(date(year, 12, 15)); } else if (date(year, 12, 25).getDayOfWeek() == WEDNESDAY) { holidays.add(date(year, 12, 24)); holidays.add(date(year, 12, 27)); workDays.add(date(year, 12, 7)); workDays.add(date(year, 12, 21));
static ImmutableHolidayCalendar generateParis() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { holidays.add(date(year, 1, 1)); // new year holidays.add(easter(year).minusDays(2)); // good friday holidays.add(easter(year).plusDays(1)); // easter monday holidays.add(date(year, 5, 1)); // labour day holidays.add(date(year, 5, 8)); // victory in europe holidays.add(easter(year).plusDays(39)); // ascension day if (year <= 2004 || year >= 2008) { holidays.add(easter(year).plusDays(50)); // whit monday } holidays.add(date(year, 7, 14)); // bastille holidays.add(date(year, 8, 15)); // assumption of mary holidays.add(date(year, 11, 1)); // all saints holidays.add(date(year, 11, 11)); // armistice day holidays.add(date(year, 12, 25)); // christmas day holidays.add(date(year, 12, 26)); // saint stephen } holidays.add(date(1999, 12, 31)); // millennium applyBridging(holidays); removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarIds.FRPA, holidays, SATURDAY, SUNDAY); }
static ImmutableHolidayCalendar generateUsGovtSecurities() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { usCommon(holidays, year, true, true, 1986); // good friday, in 1999/2007 only a partial holiday holidays.add(easter(year).minusDays(2)); // hurricane sandy if (year == 2012) { holidays.add(date(year, 10, 30)); } } holidays.add(date(2018, 12, 5)); // Death of George H.W. Bush removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarIds.USGS, holidays, SATURDAY, SUNDAY); }
static ImmutableHolidayCalendar generateEuropeanTarget() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1997; year <= 2099; year++) { if (year >= 2000) { holidays.add(date(year, 1, 1)); holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); holidays.add(date(year, 5, 1)); holidays.add(date(year, 12, 25)); holidays.add(date(year, 12, 26)); } else { // 1997 to 1999 holidays.add(date(year, 1, 1)); holidays.add(date(year, 12, 25)); } if (year == 1999 || year == 2001) { holidays.add(date(year, 12, 31)); } } removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarIds.EUTA, holidays, SATURDAY, SUNDAY); }
holidays.add(bumpSunToMon(date(year, 1, 1))); holidays.add(bumpSunToMon(date(year, 3, 21))); holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); holidays.add(bumpSunToMon(date(year, 4, 27))); holidays.add(bumpSunToMon(date(year, 5, 1))); holidays.add(bumpSunToMon(date(year, 6, 16))); holidays.add(bumpSunToMon(date(year, 8, 9))); holidays.add(bumpSunToMon(date(year, 9, 24))); holidays.add(bumpSunToMon(date(year, 12, 16))); holidays.add(christmasBumpedSun(year)); holidays.add(boxingDayBumpedSun(year)); holidays.add(date(2016, 8, 3)); holidays.add(date(2014, 5, 7)); holidays.add(date(2011, 5, 18));
static ImmutableHolidayCalendar generateMexicoCity() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { // new year holidays.add(date(year, 1, 1)); // constitution holidays.add(first(year, 2).with(firstInMonth(MONDAY))); // president holidays.add(first(year, 3).with(firstInMonth(MONDAY)).plusWeeks(2)); // maundy thursday holidays.add(easter(year).minusDays(3)); // good friday holidays.add(easter(year).minusDays(2)); // labour holidays.add(date(year, 5, 1)); // independence holidays.add(date(year, 9, 16)); // dead holidays.add(date(year, 11, 2)); // revolution holidays.add(first(year, 11).with(firstInMonth(MONDAY)).plusWeeks(2)); // guadalupe holidays.add(date(year, 12, 12)); // christmas holidays.add(date(year, 12, 25)); } removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("MXMC"), holidays, SATURDAY, SUNDAY); }
holidays.add(date(year, 1, 1)); holidays.add(date(year, 1, 2)); holidays.add(date(year, 1, 3)); holidays.add(date(year, 1, 1).with(dayOfWeekInMonth(2, MONDAY))); } else { holidays.add(bumpSunToMon(date(year, 1, 15))); holidays.add(bumpSunToMon(date(year, 2, 11))); year == 2020 || year == 2021 || year == 2024 || year == 2025 || year == 2026 || year == 2028 || year == 2029 || year == 2030) { holidays.add(bumpSunToMon(date(year, 3, 20))); } else { holidays.add(bumpSunToMon(date(year, 3, 21))); holidays.add(bumpSunToMon(date(year, 4, 29))); holidays.add(bumpSunToMon(date(year, 5, 3))); holidays.add(bumpSunToMon(date(year, 5, 4))); holidays.add(bumpSunToMon(date(year, 5, 5))); if (year >= 2007 && (date(year, 5, 3).getDayOfWeek() == SUNDAY || date(year, 5, 4).getDayOfWeek() == SUNDAY)) { holidays.add(date(year, 5, 6)); holidays.add(bumpSunToMon(date(year, 5, 3))); holidays.add(bumpSunToMon(date(year, 5, 5))); holidays.add(date(year, 7, 1).with(dayOfWeekInMonth(3, MONDAY))); } else if (year >= 1996) {
holidays.add(bumpSunToMon(date(year, 1, 1))); holidays.add(date(year, 1, 1).with(dayOfWeekInMonth(3, MONDAY))); holidays.add(bumpSunToMon(date(year, 2, 22))); } else { holidays.add(date(year, 2, 1).with(dayOfWeekInMonth(3, MONDAY))); holidays.add(bumpSunToMon(date(year, 5, 30))); } else { holidays.add(date(year, 5, 1).with(lastInMonth(MONDAY))); holidays.add(date(year, 9, 1).with(firstInMonth(MONDAY))); holidays.add(bumpSunToMon(date(year, 10, 12))); } else { holidays.add(date(year, 10, 1).with(dayOfWeekInMonth(2, MONDAY))); holidays.add(date(year, 10, 1).with(dayOfWeekInMonth(4, MONDAY))); } else { holidays.add(bumpSunToMon(date(year, 11, 11))); holidays.add(date(year, 11, 1).with(dayOfWeekInMonth(4, THURSDAY))); holidays.add(bumpToFriOrMon(date(year, 7, 4))); holidays.add(bumpToFriOrMon(date(year, 12, 25))); } else { holidays.add(bumpSunToMon(date(year, 7, 4))); holidays.add(bumpSunToMon(date(year, 12, 25)));
@Test(dataProvider = "easter") public void test_easter(int day, int month, int year) { assertEquals(GlobalHolidayCalendars.easter(year), LocalDate.of(year, month, day)); }
static ImmutableHolidayCalendar generateZurich() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { holidays.add(date(year, 1, 1)); // new year holidays.add(date(year, 1, 2)); // saint berchtoldstag holidays.add(easter(year).minusDays(2)); // good friday holidays.add(easter(year).plusDays(1)); // easter monday holidays.add(date(year, 5, 1)); // labour day holidays.add(easter(year).plusDays(39)); // ascension day holidays.add(easter(year).plusDays(50)); // whit monday holidays.add(date(year, 8, 1)); // national day holidays.add(date(year, 12, 25)); // christmas day holidays.add(date(year, 12, 26)); // saint stephen } holidays.add(date(1999, 12, 31)); // millennium holidays.add(date(2000, 1, 3)); // millennium removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarIds.CHZU, holidays, SATURDAY, SUNDAY); }
static ImmutableHolidayCalendar generateNewYorkStockExchange() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { usCommon(holidays, year, true, false, 1998); holidays.add(easter(year).minusDays(2)); holidays.add(date(i, 2, 12)); holidays.add(date(i, 10, 12)); holidays.add(date(i, 11, 11)); holidays.add(date(i, 11, 1).with(TemporalAdjusters.nextOrSame(MONDAY)).plusDays(1)); holidays.add(date(1972, 11, 7)); holidays.add(date(1976, 11, 2)); holidays.add(date(1980, 11, 4)); holidays.add(date(1955, 12, 24)); // Christmas Eve holidays.add(date(1956, 12, 24)); // Christmas Eve holidays.add(date(1958, 12, 26)); // Day after Christmas holidays.add(date(1961, 5, 29)); // Decoration day holidays.add(date(1963, 11, 25)); // Death of John F Kennedy holidays.add(date(1965, 12, 24)); // Christmas Eve holidays.add(date(1968, 2, 12)); // Lincoln birthday holidays.add(date(1968, 4, 9)); // Death of Martin Luther King holidays.add(date(1968, 6, 12)); // Paperwork crisis holidays.add(date(1968, 6, 19)); // Paperwork crisis holidays.add(date(1968, 6, 26)); // Paperwork crisis holidays.add(date(1968, 7, 3)); // Paperwork crisis holidays.add(date(1968, 7, 5)); // Day after independence
static ImmutableHolidayCalendar generateMontreal() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { // new year holidays.add(bumpToMon(date(year, 1, 1))); // good friday holidays.add(easter(year).minusDays(2)); // patriots holidays.add(date(year, 5, 25).with(TemporalAdjusters.previous(MONDAY))); // fete nationale quebec holidays.add(bumpToMon(date(year, 6, 24))); // canada holidays.add(bumpToMon(date(year, 7, 1))); // labour holidays.add(first(year, 9).with(dayOfWeekInMonth(1, MONDAY))); // thanksgiving holidays.add(first(year, 10).with(dayOfWeekInMonth(2, MONDAY))); // christmas holidays.add(christmasBumpedSatSun(year)); } removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("CAMO"), holidays, SATURDAY, SUNDAY); }
holidays.add(date(year, 1, 1)); holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); holidays.add(date(year, 5, 1)); holidays.add(date(year, 5, 8)); holidays.add(date(year, 7, 5)); holidays.add(date(year, 7, 6)); holidays.add(date(year, 9, 28)); holidays.add(date(year, 10, 28)); holidays.add(date(year, 11, 17)); holidays.add(date(year, 12, 24)); holidays.add(date(year, 12, 25)); holidays.add(date(year, 12, 26)); removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("CZPR"), holidays, SATURDAY, SUNDAY);
static ImmutableHolidayCalendar generateSydney() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { // new year holidays.add(bumpToMon(date(year, 1, 1))); // australia day holidays.add(bumpToMon(date(year, 1, 26))); // good friday holidays.add(easter(year).minusDays(2)); // easter monday holidays.add(easter(year).plusDays(1)); // anzac day holidays.add(date(year, 4, 25)); // queen's birthday holidays.add(first(year, 6).with(dayOfWeekInMonth(2, MONDAY))); // bank holiday holidays.add(first(year, 8).with(dayOfWeekInMonth(1, MONDAY))); // labour day holidays.add(first(year, 10).with(dayOfWeekInMonth(1, MONDAY))); // christmas holidays.add(christmasBumpedSatSun(year)); // boxing holidays.add(boxingDayBumpedSatSun(year)); } removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("AUSY"), holidays, SATURDAY, SUNDAY); }
for (int year = 1950; year <= 2099; year++) { holidays.add(date(year, 1, 1)); holidays.add(easter(year).minusDays(3)); holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); holidays.add(date(year, 5, 1)); holidays.add(date(year, 5, 17)); holidays.add(easter(year).plusDays(39)); holidays.add(easter(year).plusDays(50)); holidays.add(date(year, 12, 24)); holidays.add(date(year, 12, 25)); holidays.add(date(year, 12, 26)); holidays.add(date(year, 12, 31)); removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("NOOS"), holidays, SATURDAY, SUNDAY);
for (int year = 1950; year <= 2099; year++) { holidays.add(bumpToMon(date(year, 1, 1))); holidays.add(first(year, 2).with(dayOfWeekInMonth(3, MONDAY))); holidays.add(easter(year).minusDays(2)); holidays.add(date(year, 5, 25).with(TemporalAdjusters.previous(MONDAY))); holidays.add(bumpToMon(date(year, 7, 1))); holidays.add(first(year, 8).with(dayOfWeekInMonth(1, MONDAY))); holidays.add(first(year, 9).with(dayOfWeekInMonth(1, MONDAY))); holidays.add(first(year, 10).with(dayOfWeekInMonth(2, MONDAY))); holidays.add(bumpToMon(date(year, 11, 11))); holidays.add(christmasBumpedSatSun(year)); holidays.add(boxingDayBumpedSatSun(year)); removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("CATO"), holidays, SATURDAY, SUNDAY);
for (int year = 1950; year <= 2099; year++) { holidays.add(date(year, 1, 1)); holidays.add(easter(year).minusDays(48)); holidays.add(easter(year).minusDays(47)); holidays.add(date(year, 4, 21)); holidays.add(easter(year).minusDays(2)); holidays.add(date(year, 5, 1)); holidays.add(easter(year).plusDays(60)); holidays.add(date(year, 9, 7)); holidays.add(date(year, 10, 12)); holidays.add(date(year, 11, 2)); holidays.add(date(year, 11, 15)); holidays.add(date(year, 12, 25)); removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarId.of("BRBD"), holidays, SATURDAY, SUNDAY);
holidays.add(bumpToMon(first(year, 1))); holidays.add(easter(year).minusDays(2)); holidays.add(easter(year).plusDays(1)); holidays.add(date(1995, 5, 8)); } else if (year >= 1978) { holidays.add(first(year, 5).with(firstInMonth(MONDAY))); holidays.add(date(2002, 6, 3)); holidays.add(date(2002, 6, 4)); } else if (year == 2012) { holidays.add(date(2012, 6, 4)); holidays.add(date(2012, 6, 5)); } else if (year == 1967 || year == 1970) { holidays.add(first(year, 5).with(lastInMonth(MONDAY))); } else if (year < 1971) { holidays.add(easter(year).plusDays(50)); } else { holidays.add(first(year, 5).with(lastInMonth(MONDAY))); holidays.add(first(year, 8).with(firstInMonth(MONDAY))); } else if (year < 1971) { holidays.add(first(year, 8).with(lastInMonth(SATURDAY)).plusDays(2)); } else { holidays.add(first(year, 8).with(lastInMonth(MONDAY)));
static ImmutableHolidayCalendar generateFrankfurt() { List<LocalDate> holidays = new ArrayList<>(2000); for (int year = 1950; year <= 2099; year++) { holidays.add(date(year, 1, 1)); // new year holidays.add(easter(year).minusDays(2)); // good friday holidays.add(easter(year).plusDays(1)); // easter monday holidays.add(date(year, 5, 1)); // labour day holidays.add(easter(year).plusDays(39)); // ascension day holidays.add(easter(year).plusDays(50)); // whit monday holidays.add(easter(year).plusDays(60)); // corpus christi if (year >= 2000) { holidays.add(date(year, 10, 3)); // german unity } if (year <= 1994) { // Wed before the Sunday that is 2 weeks before first advent, which is 4th Sunday before Christmas holidays.add(date(year, 12, 25).with(previous(SUNDAY)).minusWeeks(6).minusDays(4)); // repentance } holidays.add(date(year, 12, 25)); // christmas day holidays.add(date(year, 12, 26)); // saint stephen holidays.add(date(year, 12, 31)); // new year } holidays.add(date(2017, 10, 31)); // reformation day removeSatSun(holidays); return ImmutableHolidayCalendar.of(HolidayCalendarIds.DEFR, holidays, SATURDAY, SUNDAY); }