Пример #1
0
        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) { }
            });
        }
Пример #2
0
        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;
        }