HolidayCollection Class

A type-safe collection of Holiday objects

Definition

Namespace: EWSoftware.PDI
Assembly: EWSoftware.PDI (in EWSoftware.PDI.dll) Version: 2023.1.2.0
[SerializableAttribute]
public class HolidayCollection : Collection<Holiday>
Inheritance
Object    CollectionHoliday    HolidayCollection

Remarks

Besides the standard collection methods, this class also contains some utility methods used to see if a specific date is a holiday (IsHoliday(DateTime)), get a description for a date if it is a holiday (HolidayDescription(DateTime)), and get a list of dates based on the holiday entries (HolidaysBetween(Int32, Int32)). The class also has a type-safe enumerator and is serializable.

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);
    }
}

Constructors

HolidayCollection Default constructor
HolidayCollection(IEnumerableHoliday) Construct the collection from an enumerable list of Holiday objects

Properties

CountGets the number of elements actually contained in the CollectionT.
(Inherited from CollectionHoliday)
ItemGets or sets the element at the specified index.
(Inherited from CollectionHoliday)
ItemsGets a IListT wrapper around the CollectionT.
(Inherited from CollectionHoliday)

Methods

AddAdds an object to the end of the CollectionT.
(Inherited from CollectionHoliday)
AddFixed Add a new holiday object to the collection that occurs on a fixed date
AddFloating Add a new holiday object to the collection that occurs on a floating date
AddRange Add a range of Holiday instances from an enumerable list
AddStandardHolidays This adds a standard set of United States holidays to the collection
ClearRemoves all elements from the CollectionT.
(Inherited from CollectionHoliday)
ClearItemsRemoves all elements from the CollectionT.
(Inherited from CollectionHoliday)
ContainsDetermines whether an element is in the CollectionT.
(Inherited from CollectionHoliday)
CopyToCopies the entire CollectionT to a compatible one-dimensional Array, starting at the specified index of the target array.
(Inherited from CollectionHoliday)
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
GetEnumeratorReturns an enumerator that iterates through the CollectionT.
(Inherited from CollectionHoliday)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetTypeGets the Type of the current instance.
(Inherited from Object)
HolidayDescription This method returns a description if the specified date falls on a holiday or an empty string if it does not.
HolidaysBetween This method returns an enumerable list of holidays between the given years
IndexOfSearches for the specified object and returns the zero-based index of the first occurrence within the entire CollectionT.
(Inherited from CollectionHoliday)
InsertInserts an element into the CollectionT at the specified index.
(Inherited from CollectionHoliday)
InsertItemInserts an element into the CollectionT at the specified index.
(Inherited from CollectionHoliday)
IsHoliday This method returns true if the specified date falls on a holiday or false if it does not
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
RemoveRemoves the first occurrence of a specific object from the CollectionT.
(Inherited from CollectionHoliday)
RemoveAtRemoves the element at the specified index of the CollectionT.
(Inherited from CollectionHoliday)
RemoveItemRemoves the element at the specified index of the CollectionT.
(Inherited from CollectionHoliday)
SetItemReplaces the element at the specified index.
(Inherited from CollectionHoliday)
ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also