FixedHoliday(Int32, Int32, Boolean, String) Constructor

Construct a new holiday object that occurs on a fixed date. The holiday date can optionally be adjusted to a Friday or Monday if it falls on a weekend.

Definition

Namespace: EWSoftware.PDI
Assembly: EWSoftware.PDI (in EWSoftware.PDI.dll) Version: 2023.1.2.0
public FixedHoliday(
	int month,
	int day,
	bool adjust,
	string description
)

Parameters

month  Int32
The month of the holiday.
day  Int32
The day of the month on which it occurs.
adjust  Boolean
Set to true to adjust date to the Friday or Monday if it falls on a weekend or false to always keep it on the specified day of the month.
description  String
A description of the holiday.

Example

This example demonstrates the use of the holiday classes and their methods.
C#
DateTime testDate;
int yearFrom = 1998, yearTo = 2006;

// Create a set of fixed and floating holidays
HolidayCollection holidays = new HolidayCollection();

holidays.AddFixed(1, 1, true, "New Year's Day");
holidays.AddFloating(DayOccurrence.Third, DayOfWeek.Monday, 1, 0, "Martin Luther King Day");
holidays.AddFloating(DayOccurrence.Third, DayOfWeek.Monday, 2, 0, "President's Day");
holidays.AddFloating(DayOccurrence.Last, DayOfWeek.Monday, 5, 0, "Memorial Day");
holidays.AddFixed(7, 4, true, "Independence Day");
holidays.AddFloating(DayOccurrence.First, DayOfWeek.Monday, 9, 0, "Labor Day");
holidays.AddFixed(11, 11, true, "Veteran's Day");
holidays.AddFloating(DayOccurrence.Fourth, DayOfWeek.Thursday, 11, 0, "Thanksgiving Day");
holidays.AddFloating(DayOccurrence.Fourth, DayOfWeek.Thursday, 11, 1, "Day After Thanksgiving");
holidays.AddFixed(12, 25, true, "Christmas Day");

// Display the holidays added to the list
Console.WriteLine("Holidays on file.  Is Holiday should be true for all.");

foreach(Holiday hol in holidays)
    Console.WriteLine("Holiday Date: {0:d}   Is Holiday: {1}  Description: {2}",
        hol.ToDateTime(yearFrom), holidays.IsHoliday(hol.ToDateTime(yearFrom)),
        hol.Description);

// Display holidays found in each year specified using the IsHoliday method
Console.WriteLine("Looking for holidays using the IsHoliday method");

testDate = new DateTime(yearFrom, 1, 1);

while(testDate.Year <= yearTo)
{
    if(holidays.IsHoliday(testDate))
        Console.WriteLine("Found holiday: {0:d}", testDate);

    testDate = testDate.AddDays(1);
}

// One more time, but use a hash set using the dates returned by the HolidaysBetween()
// method.  For bulk comparisons, this is faster than the above procedure using the
// IsHoliday method.
Console.WriteLine("Looking for holidays using HolidaysBetween");

var holidayDates = new HashSet<DateTime>(holidays.HolidaysBetween(yearFrom, yearTo));

if(holidayDates.Count != 0)
{
    testDate = new DateTime(yearFrom, 1, 1);

    while(testDate.Year <= yearTo)
    {
        if(holidayDates.Contains(testDate))
            Console.WriteLine("Found holiday: {0:d} {1}", testDate,
                holidays.HolidayDescription(testDate));

        testDate = testDate.AddDays(1);
    }
}

Exceptions

ArgumentOutOfRangeExceptionAn exception will be thrown if the month is not between 1 and 12.
ArgumentExceptionAn exception will be thrown if the day is not valid for the month. February 29th (leap year) is not accepted either.

See Also