00001 #include ".\usdate.h" 00002 #using <mscorlib.dll> 00003 00004 bool UsDate::isBusinessDay() { 00005 Weekday w = weekday(); 00006 Day d = dayOfMonth(); 00007 Month m = month(); 00008 if ((w == Saturday || w == Sunday) 00009 // New Year's Day (possibly moved to Monday if on Sunday) 00010 || ((d == 1 || (d == 2 && w == Monday)) && m == January) 00011 // (or to Friday if on Saturday) 00012 || (d == 31 && w == Friday && m == December) 00013 // Martin Luther King's birthday (third Monday in January) 00014 || ((d >= 15 && d <= 21) && w == Monday && m == January) 00015 // Washington's birthday (third Monday in February) 00016 || ((d >= 15 && d <= 21) && w == Monday && m == February) 00017 // Memorial Day (last Monday in May) 00018 || (d >= 25 && w == Monday && m == May) 00019 // Independence Day (Monday if Sunday or Friday if Saturday) 00020 || ((d == 4 || (d == 5 && w == Monday) || 00021 (d == 3 && w == Friday)) && m == July) 00022 // Labor Day (first Monday in September) 00023 || (d <= 7 && w == Monday && m == September) 00024 // Columbus Day (second Monday in October) 00025 || ((d >= 8 && d <= 14) && w == Monday && m == October) 00026 // Veteran's Day (Monday if Sunday or Friday if Saturday) 00027 || ((d == 11 || (d == 12 && w == Monday) || 00028 (d == 10 && w == Friday)) && m == November) 00029 // Thanksgiving Day (fourth Thursday in November) 00030 || ((d >= 22 && d <= 28) && w == Thursday && m == November) 00031 // Christmas (Monday if Sunday or Friday if Saturday) 00032 || ((d == 25 || (d == 26 && w == Monday) || 00033 (d == 24 && w == Friday)) && m == December)) 00034 return false; 00035 return true; 00036 }