static void Main(string[] args) { //Arrange var culture = new WorkingDayCultureInfo("en-US"); var startDate = new DateTime(2018, 5, 1); int n = 10; List <int> list = new List <int>(n); for (int i = 0; i < n; i++) { list.Add(i); } //Act Parallel.ForEach(list, (i) => { try { startDate.AddWorkingDays(i, culture); } catch (Exception exp) { } }); var midsummerDay = new NthDayOfWeekAfterDayHoliday("Midsummer Day", 1, DayOfWeek.Saturday, 6, 20); Parallel.ForEach(list, (i) => { try { midsummerDay.GetInstance(1900 + i); } catch (Exception exp) { } }); }
protected override IDictionary <DateTime, Holiday> BuildObservancesMap(int year) { IDictionary <DateTime, Holiday> holidayMap = new Dictionary <DateTime, Holiday>(); foreach (var innerHoliday in InnerHolidays) { var date = innerHoliday.GetInstance(year); if (date.HasValue) { holidayMap.Add(date.Value, innerHoliday); // New Year, Day After New Year, Christmas and Boxing Days are 'Mondayised' // ie if these dates fall on a weekday then they are observed on the actual day. // If they fall on a weekend then they are observed on the following Monday/Tuesday if (IsMondayised(innerHoliday, date.Value.DayOfWeek)) { var observation = new NthDayOfWeekAfterDayHoliday(innerHoliday.Name + " Observed", 1, DayOfWeek.Monday, innerHoliday); var observedIntance = observation.GetInstance(year); if (observedIntance != null) { holidayMap.Add(observedIntance.Value, observation); } } if (IsTuesdayised(innerHoliday, date.Value.DayOfWeek)) { var observation = new NthDayOfWeekAfterDayHoliday(innerHoliday.Name + " Observed", 1, DayOfWeek.Tuesday, innerHoliday); var observedIntance = observation.GetInstance(year); if (observedIntance != null) { holidayMap.Add(observedIntance.Value, observation); } } } } return(holidayMap); }
protected override IDictionary<DateTime, Holiday> BuildObservancesMap(int year) { IDictionary<DateTime, Holiday> holidayMap = new Dictionary<DateTime, Holiday>(); foreach (var innerHoliday in InnerHolidays) { var date = innerHoliday.GetInstance(year); if (date.HasValue) { holidayMap.Add(date.Value, innerHoliday); // New Year, Day After New Year, Christmas and Boxing Days are 'Mondayised' // ie if these dates fall on a weekday then they are observed on the actual day. // If they fall on a weekend then they are observed on the following Monday/Tuesday if (IsMondayised(innerHoliday, date.Value.DayOfWeek)) { var observation = new NthDayOfWeekAfterDayHoliday(innerHoliday.Name + " Observed", 1, DayOfWeek.Monday, innerHoliday); var observedIntance = observation.GetInstance(year); if (observedIntance != null) { holidayMap.Add(observedIntance.Value, observation); } } if (IsTuesdayised(innerHoliday, date.Value.DayOfWeek)) { var observation = new NthDayOfWeekAfterDayHoliday(innerHoliday.Name + " Observed", 1, DayOfWeek.Tuesday, innerHoliday); var observedIntance = observation.GetInstance(year); if (observedIntance != null) { holidayMap.Add(observedIntance.Value, observation); } } } } return holidayMap; }