Beispiel #1
0
    def __generate_holidays(cls, year):
        
        empty = Calendar()
        
        # New Year's Day
        yield empty.adjust(date(year, 1, 1), BusinessDayConvention.following)
        
        if year >= 2000:
            # Good Friday and Easter Monday
            easter_monday = empty.easter(year);
            yield easter_monday + timedelta(-3)
            yield easter_monday
            
        if year >= 2000:
            # Labour Day
            yield date(year, 5, 1)

        # Christmas
        yield date(year, 12, 25)

        if year >= 2000:
            # Day of Goodwill
            yield date(year, 12, 26)

        if year == 1998 or year == 1999 or year == 2001:
            yield date(year, 12, 31)
    def __generate_holidays(cls, year):
        
        empty = Calendar();
        
        # New Years Days, adjusted to the first non-weekend.
        yield empty.adjust(date(year, JulianMonth.january, 1), BusinessDayConvention.following)

        # Good Friday and Easter Monday
        easter_monday = empty.easter(year)
        yield easter_monday - timedelta(3)
        yield easter_monday

        if year == 2011:
            # Royal Wedding
            yield date(2011, JulianMonth.april, 29)
            
        # May Day - first Monday in May.
        yield empty.add_nth_day_of_week(date(year, JulianMonth.may, 1), 1, DayOfWeek.monday, False)
        
        if year == 2002:
            # Golden Jubilee Bank Holiday
            yield date(2002, JulianMonth.june, 3)
            # Special Spring Bank Holiday
            yield date(2002, JulianMonth.june, 4)
        elif year == 2012:
            # Diamond Jubilee Bank Holiday
            yield date(2012, JulianMonth.june, 4)
            # Special Spring Bank Holiday
            yield date(2012, JulianMonth.june, 5)
        else:
            # Spring Bank Holiday - last Monday in May
            yield empty.add_nth_day_of_week(empty.end_of_month(year, JulianMonth.may), -1, DayOfWeek.monday, False)
        
        # August Bank Holiday - last Monday in August.
        yield empty.add_nth_day_of_week(empty.end_of_month(year, JulianMonth.august), -1, DayOfWeek.monday, False)

        # Christmas Day
        christmas_day = empty.adjust(date(year, JulianMonth.december, 25), BusinessDayConvention.following)
        yield christmas_day

        # Boxing Day
        yield empty.add_business_days(christmas_day, 1)
        
        if year == 1999:
            # Millennium Celebration
            yield date(1999, JulianMonth.december, 31)
    def __generate_holidays(cls, year):
        
        empty = Calendar()
        
        # New Year's Day (possibly moved to Monday if on Sunday)
        new_years_day = date(year, JulianMonth.january, 1)
        yield (new_years_day if new_years_day.weekday() != DayOfWeek.sunday else new_years_day + timedelta(1))
        
        # Martin Luther King's birthday (third Monday in January)
        yield Calendar.add_nth_day_of_week(date(year, JulianMonth.january, 1), 3, DayOfWeek.monday, False)
        
        # Washington's birthday (third Monday in February)
        yield Calendar.add_nth_day_of_week(date(year, JulianMonth.february, 1), 3, DayOfWeek.monday, False)
        
        # Good Friday
        yield empty.easter(year) - timedelta(3)

        # Memorial Day (last Monday in May)
        yield Calendar.add_nth_day_of_week(Calendar.end_of_month(year, JulianMonth.may), -1, DayOfWeek.monday, False)
        
        # Independence Day (Monday if Sunday or Friday if Saturday)
        yield empty.nearest_business_day(date(year, JulianMonth.july, 4))

        # Labor Day (first Monday in September)
        yield empty.add_nth_day_of_week(date(year, JulianMonth.september, 1), 1, DayOfWeek.monday, False)

        # Columbus Day (second Monday in October)
        yield empty.add_nth_day_of_week(date(year, JulianMonth.october, 1), 2, DayOfWeek.monday, False)

        # Veteran's Day (Monday if Sunday or Friday if Saturday)
        yield empty.nearest_business_day(date(year, JulianMonth.november, 11))

        # Thanksgiving Day (fourth Thursday in November)
        yield empty.add_nth_day_of_week(date(year, JulianMonth.november, 1), 4, DayOfWeek.thursday, False)

        # Christmas (Monday if Sunday or Friday if Saturday)
        yield empty.nearest_business_day(date(year, JulianMonth.december, 25))
 def test_easter(self):
     self.assertEquals(date(2001, 4, 15), Calendar.easter(2001), "Easter 2001")
     self.assertEquals(date(2002, 3, 31), Calendar.easter(2002), "Easter 2002")
     self.assertEquals(date(2003, 4, 20), Calendar.easter(2003), "Easter 2003")
     self.assertEquals(date(2004, 4, 11), Calendar.easter(2004), "Easter 2004")
     self.assertEquals(date(2005, 3, 27), Calendar.easter(2005), "Easter 2005")
     self.assertEquals(date(2006, 4, 16), Calendar.easter(2006), "Easter 2006")
     self.assertEquals(date(2007, 4, 8), Calendar.easter(2007), "Easter 2007")
     self.assertEquals(date(2008, 3, 23), Calendar.easter(2008), "Easter 2008")
     self.assertEquals(date(2009, 4, 12), Calendar.easter(2009), "Easter 2009")
     self.assertEquals(date(2010, 4, 4), Calendar.easter(2010), "Easter 2010")
     self.assertEquals(date(2011, 4, 24), Calendar.easter(2011), "Easter 2011")
     self.assertEquals(date(2012, 4, 8), Calendar.easter(2012), "Easter 2012")
     self.assertEquals(date(2013, 3, 31), Calendar.easter(2013), "Easter 2013")
     self.assertEquals(date(2014, 4, 20), Calendar.easter(2014), "Easter 2014")
     self.assertEquals(date(2015, 4, 5), Calendar.easter(2015), "Easter 2015")
     self.assertEquals(date(2016, 3, 27), Calendar.easter(2016), "Easter 2016")
     self.assertEquals(date(2017, 4, 16), Calendar.easter(2017), "Easter 2017")
     self.assertEquals(date(2018, 4, 1), Calendar.easter(2018), "Easter 2018")
     self.assertEquals(date(2019, 4, 21), Calendar.easter(2019), "Easter 2019")
     self.assertEquals(date(2020, 4, 12), Calendar.easter(2020), "Easter 2020")
     self.assertEquals(date(2021, 4, 4), Calendar.easter(2021), "Easter 2021")
    def __generatte_holidays(cls, year):
        
        empty = Calendar()
        
        # New Year's Day (possibly moved to Monday if on Sunday)
        new_years_day = date(year, JulianMonth.january, 1)
        yield (new_years_day if new_years_day.weekday() != DayOfWeek.sunday else new_years_day + timedelta(1))
        
        # Washington's birthday (third Monday in February)
        yield empty.add_nth_day_of_week(date(year, JulianMonth.february, 1), 3, DayOfWeek.monday, False)
        
        # Good Friday
        yield empty.easter(year) - timedelta(3)

        # Memorial Day (last Monday in May)
        yield empty.add_nth_day_of_week(empty.end_of_month(year, JulianMonth.may), -1, DayOfWeek.monday, False)

        # Independence Day (Monday if Sunday or Friday if Saturday)
        yield empty.nearest_business_day(date(year, JulianMonth.july, 4))

        # Labor Day (first Monday in September)
        yield empty.add_nth_day_of_week(date(year, JulianMonth.september, 1), 1, DayOfWeek.monday, False)

        # Thanksgiving Day (fourth Thursday in November)
        yield empty.add_nth_day_of_week(date(year, JulianMonth.november, 1), 4, DayOfWeek.thursday, False)

        # Christmas (Monday if Sunday or Friday if Saturday)
        yield empty.nearest_business_day(date(year, JulianMonth.december, 25))

        if year >= 1998:
            # Martin Luther King's birthday (third Monday in January)
            yield Calendar.add_nth_day_of_week(date(year, JulianMonth.january, 1), 3, DayOfWeek.monday, False)

        if year <= 1968 or (year <= 1980 and year % 4 == 0):
            # Presidential election days
            yield Calendar.add_nth_day_of_week(date(year, JulianMonth.november, 1), 1, DayOfWeek.tuesday, True)

        # Special closings
        if year == 2012:
            # Hurricane Sandy
            yield date(2012, JulianMonth.october, 29)
            yield date(2012, JulianMonth.october, 30)

        if year == 2007:
            # President Ford's funeral
            yield date(2007, JulianMonth.january, 2)
        
        if year == 2004:
            # President Reagan's funeral
            yield date(2004, JulianMonth.june, 11)
        
        if year == 2001:
            # September 11-14, 2001
            yield date(2001, JulianMonth.september, 11)
            yield date(2001, JulianMonth.september, 12)
            yield date(2001, JulianMonth.september, 13)
            yield date(2001, JulianMonth.september, 14)
            
        if year == 1994:
            # President Nixon's funeral
            yield date(1994, JulianMonth.april, 27)
            
        if year == 1985:
            # Hurricane Gloria
            yield date(1985, JulianMonth.september, 27)
            
        if year == 1977:
            # 1977 Blackout
            yield date(1977, JulianMonth.july, 14)
            
        if year == 1973:
            # Funeral of former President Lyndon B. Johnson.
            yield date(1973, JulianMonth.january, 25)
            
        if year == 1972:
            # Funeral of former President Harry S. Truman
            yield date(1972, JulianMonth.december, 28)
            
        if year == 1969:
            # National Day of Participation for the lunar exploration.
            yield date(1969, JulianMonth.july, 21)
            # Funeral of former President Eisenhower.
            yield date(1969, JulianMonth.march, 31)
            # Closed all day - heavy snow.
            yield date(1969, JulianMonth.february, 10)
            
        if year == 1968:
            # Day after Independence Day.
            yield date(1968, JulianMonth.july, 5)
            # June 12-Dec. 31, 1968
            # Four day week (closed on Wednesdays) - Paperwork Crisis
            d = date(1968, JulianMonth.june, 12)
            while d.year == 1968:
                yield d
                d += timedelta(7)
            # Day of mourning for Martin Luther King Jr.
            yield date(1968, JulianMonth.april, 9)
        
        if year == 1963:
            # Funeral of President Kennedy
            yield date(1963, JulianMonth.november, 25)
        
        if year == 1961:
            # Day before Decoration Day
            yield date(1961, JulianMonth.may, 29)
            
        if year == 1958:
            # Day after Christmas
            yield date(1958, JulianMonth.december, 26)
            
        if year == 1954 or year == 1956 or year == 1965:
            # Christmas Eve
            yield date(year, JulianMonth.december, 24)