Last active
April 5, 2019 22:22
-
-
Save mfuzalam/712e54279c756efa8c50e0938b317743 to your computer and use it in GitHub Desktop.
Revisions
-
mfuzalam revised this gist
Apr 5, 2019 . 1 changed file with 0 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -8,7 +8,6 @@ public class FederalHolidays { //This gist is a slightly modified version of (https://github.com/esun9064/Federal-Holiday/tree/master/src) Federal Holiday code. private static Date newYearsDay(int nYear) { Date date; -
mfuzalam created this gist
Apr 5, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,546 @@ package com.mfuz; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class FederalHolidays { //This gist is a slightly modified version of (https://github.com/esun9064/Federal-Holiday/tree/master/src) Federal Holiday code. private static Date newYearsDay(int nYear) { Date date; Calendar cal = new GregorianCalendar(nYear, Calendar.JANUARY, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SATURDAY: date = (new GregorianCalendar(--nYear, Calendar.DECEMBER, 31)).getTime(); System.out.println("New Years day for " + nYear + " is: " + date); return date; case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 2)).getTime(); System.out.println("New Years day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: case Calendar.TUESDAY: case Calendar.WEDNESDAY: case Calendar.THURSDAY: case Calendar.FRIDAY: default: date = cal.getTime(); System.out.println("New Years day for " + nYear + " is: " + date); return date; } } private static Date martinLutherKingDay(int nYear) { Date date; // Third Monday in January Calendar cal = new GregorianCalendar(nYear, Calendar.JANUARY, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 16)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 15)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; case Calendar.TUESDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 21)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; case Calendar.WEDNESDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 20)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; case Calendar.THURSDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 19)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; case Calendar.FRIDAY: date = (new GregorianCalendar(nYear, Calendar.JANUARY, 18)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; default: // Saturday date = (new GregorianCalendar(nYear, Calendar.JANUARY, 17)).getTime(); System.out.println("Martin Luther King day for " + nYear + " is: " + date); return date; } } private static Date presidentsDay(int nYear) { Date date; // Third Monday in February Calendar cal = new GregorianCalendar(nYear, Calendar.FEBRUARY, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 16)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 15)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; case Calendar.TUESDAY: date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 21)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; case Calendar.WEDNESDAY: date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 20)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; case Calendar.THURSDAY: date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 19)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; case Calendar.FRIDAY: date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 18)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; default: // Saturday date = (new GregorianCalendar(nYear, Calendar.FEBRUARY, 17)).getTime(); System.out.println("President's day for " + nYear + " is: " + date); return date; } } private static Date memorialDay(int nYear) { Date date; // Last Monday in May Calendar cal = new GregorianCalendar(nYear, Calendar.MAY, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.MAY, 30)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: date = (new GregorianCalendar(nYear, Calendar.MAY, 29)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; case Calendar.TUESDAY: date = (new GregorianCalendar(nYear, Calendar.MAY, 28)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; case Calendar.WEDNESDAY: date = (new GregorianCalendar(nYear, Calendar.MAY, 27)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; case Calendar.THURSDAY: date = (new GregorianCalendar(nYear, Calendar.MAY, 26)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; case Calendar.FRIDAY: date = (new GregorianCalendar(nYear, Calendar.MAY, 25)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; default: // Saturday date = (new GregorianCalendar(nYear, Calendar.MAY, 31)).getTime(); System.out.println("Memorial day for " + nYear + " is: " + date); return date; } } private static Date independenceDay(int nYear) { Date date; Calendar cal = new GregorianCalendar(nYear, Calendar.JULY, 4); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SATURDAY: date = (new GregorianCalendar(nYear, Calendar.JULY, 3)).getTime(); System.out.println("Independence day for " + nYear + " is: " + date); return date; case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.JULY, 5)).getTime(); System.out.println("Independence day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: case Calendar.TUESDAY: case Calendar.WEDNESDAY: case Calendar.THURSDAY: case Calendar.FRIDAY: default: date = cal.getTime(); System.out.println("Independence day for " + nYear + " is: " + date); return date; } } private static Date laborDay(int nYear) { Date date; // The first Monday in September Calendar cal = new GregorianCalendar(nYear, Calendar.SEPTEMBER, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.TUESDAY: date = (new GregorianCalendar(nYear, Calendar.SEPTEMBER, 7)).getTime(); System.out.println("Independence day for " + nYear + " is: " + date); return date; case Calendar.WEDNESDAY: date = (new GregorianCalendar(nYear, Calendar.SEPTEMBER, 6)).getTime(); System.out.println("Labor day for " + nYear + " is: " + date); return date; case Calendar.THURSDAY: date = (new GregorianCalendar(nYear, Calendar.SEPTEMBER, 5)).getTime(); System.out.println("Labor day for " + nYear + " is: " + date); return date; case Calendar.FRIDAY: date = (new GregorianCalendar(nYear, Calendar.SEPTEMBER, 4)).getTime(); System.out.println("Labor day for " + nYear + " is: " + date); return date; case Calendar.SATURDAY: date = (new GregorianCalendar(nYear, Calendar.SEPTEMBER, 3)).getTime(); System.out.println("Labor day for " + nYear + " is: " + date); return date; case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.SEPTEMBER, 2)).getTime(); System.out.println("Labor day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: default: date = cal.getTime(); System.out.println("Labor day for " + nYear + " is: " + date); return date; } } private static Date columbusDay(int nYear) { Date date; // The second Monday in October Calendar cal = new GregorianCalendar(nYear, Calendar.OCTOBER, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 9)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 8)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; case Calendar.TUESDAY: date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 14)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; case Calendar.WEDNESDAY: date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 13)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; case Calendar.THURSDAY: date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 12)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; case Calendar.FRIDAY: date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 11)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; default: // Saturday date = (new GregorianCalendar(nYear, Calendar.OCTOBER, 11)).getTime(); System.out.println("Columbus day for " + nYear + " is: " + date); return date; } } private static Date veteransDay(int nYear) { Date date; Calendar cal = new GregorianCalendar(nYear, Calendar.NOVEMBER, 11); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SATURDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 10)).getTime(); System.out.println("Veterans day for " + nYear + " is: " + date); return date; case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 12)).getTime(); System.out.println("Veterans day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: case Calendar.TUESDAY: case Calendar.WEDNESDAY: case Calendar.THURSDAY: case Calendar.FRIDAY: default: date = cal.getTime(); System.out.println("Veterans day for " + nYear + " is: " + date); return date; } } private static Date thanksgiving(int nYear) { Date date; Calendar cal = new GregorianCalendar(nYear, Calendar.NOVEMBER, 1); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 26)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 25)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; case Calendar.TUESDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 24)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; case Calendar.WEDNESDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 23)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; case Calendar.THURSDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 22)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; case Calendar.FRIDAY: date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 28)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; default: // Saturday date = (new GregorianCalendar(nYear, Calendar.NOVEMBER, 27)).getTime(); System.out.println("Thanksgiving day for " + nYear + " is: " + date); return date; } } private static Date christmasDay(int nYear) { Date date; Calendar cal = new GregorianCalendar(nYear, Calendar.DECEMBER, 25); switch (cal.get(Calendar.DAY_OF_WEEK)) { case Calendar.SATURDAY: date = (new GregorianCalendar(nYear, Calendar.DECEMBER, 24)).getTime(); System.out.println("Christmas day for " + nYear + " is: " + date); return date; case Calendar.SUNDAY: date = (new GregorianCalendar(nYear, Calendar.DECEMBER, 26)).getTime(); System.out.println("Christmas day for " + nYear + " is: " + date); return date; case Calendar.MONDAY: case Calendar.TUESDAY: case Calendar.WEDNESDAY: case Calendar.THURSDAY: case Calendar.FRIDAY: default: date = cal.getTime(); System.out.println("Christmas day for " + nYear + " is: " + date); return date; } } public static boolean isTodayFederalHoliday(LocalDate localDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); int nYear = localDate.getYear(); return (formatter.format(newYearsDay(nYear)).equals(localDate.toString()) || formatter.format(martinLutherKingDay(nYear)).equals(localDate.toString()) || formatter.format(presidentsDay(nYear)).equals(localDate.toString()) || formatter.format(memorialDay(nYear)).equals(localDate.toString()) || formatter.format(independenceDay(nYear)).equals(localDate.toString()) || formatter.format(laborDay(nYear)).equals(localDate.toString()) || formatter.format(columbusDay(nYear)).equals(localDate.toString()) || formatter.format(veteransDay(nYear)).equals(localDate.toString()) || formatter.format(thanksgiving(nYear)).equals(localDate.toString()) || formatter.format(christmasDay(nYear)).equals(localDate.toString())); } //The below with generate all the holidays for you from 2019 to 2035. public static void main(String[] args) { //System.out.println("Is it Holiday? " + isTodayFederalHoliday(LocalDate.now())); for (int nYear = 2019; nYear <= 2035; nYear++) { System.out.println("Federal Holidays for " + nYear + ":"); newYearsDay(nYear); martinLutherKingDay(nYear); presidentsDay(nYear); memorialDay(nYear); independenceDay(nYear); laborDay(nYear); columbusDay(nYear); veteransDay(nYear); thanksgiving(nYear); christmasDay(nYear); System.out.println(); } } }