Last active
April 21, 2023 08:42
-
-
Save greyaperez/9555657 to your computer and use it in GitHub Desktop.
Function to Check Whether Date is a Business Day or Not (ex: Weekend or Holiday)
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 characters
/** | |
* Is Date A Business Day? | |
* @param cal | |
* @return boolean | |
*/ | |
public boolean isBusinessDay(Calendar cal){ | |
// check if weekend | |
if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){ | |
return false; | |
} | |
// check if New Year's Day | |
if (cal.get(Calendar.MONTH) == Calendar.JANUARY | |
&& cal.get(Calendar.DAY_OF_MONTH) == 1) { | |
return false; | |
} | |
// check if Christmas | |
if (cal.get(Calendar.MONTH) == Calendar.DECEMBER | |
&& cal.get(Calendar.DAY_OF_MONTH) == 25) { | |
return false; | |
} | |
// check if 4th of July | |
if (cal.get(Calendar.MONTH) == Calendar.JULY | |
&& cal.get(Calendar.DAY_OF_MONTH) == 4) { | |
return false; | |
} | |
// check Thanksgiving (4th Thursday of November) | |
if (cal.get(Calendar.MONTH) == Calendar.NOVEMBER | |
&& cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) == 4 | |
&& cal.get(Calendar.DAY_OF_WEEK) == Calendar.THURSDAY) { | |
return false; | |
} | |
// check Memorial Day (last Monday of May) | |
if (cal.get(Calendar.MONTH) == Calendar.MAY | |
&& cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY | |
&& cal.get(Calendar.DAY_OF_MONTH) > (31 - 7) ) { | |
return false; | |
} | |
// check Labor Day (1st Monday of September) | |
if (cal.get(Calendar.MONTH) == Calendar.SEPTEMBER | |
&& cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) == 1 | |
&& cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { | |
return false; | |
} | |
// check President's Day (3rd Monday of February) | |
if (cal.get(Calendar.MONTH) == Calendar.FEBRUARY | |
&& cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) == 3 | |
&& cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { | |
return true; | |
} | |
// check Veterans Day (November 11) | |
if (cal.get(Calendar.MONTH) == Calendar.NOVEMBER | |
&& cal.get(Calendar.DAY_OF_MONTH) == 11) { | |
return true; | |
} | |
// check MLK Day (3rd Monday of January) | |
if (cal.get(Calendar.MONTH) == Calendar.JANUARY | |
&& cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) == 3 | |
&& cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { | |
return true; | |
} | |
// IF NOTHING ELSE, IT'S A BUSINESS DAY | |
return true; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Good Code, two more conditions
if next day is a holiday and next day is Saturday then it is the observed holiday today
if previous day is a holiday and previous day is Sunday then it the observed holiday today