/// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            DateTime calculationDay;

            if (year >= 2007 && year <= 2009)
            {
                calculationDay = DateTimeFactory.FindNextDay(year, 11, 1, DayOfWeek.Tuesday);
            }
            else
            {
                //2010+ first Monday of the September/October school holidays
                //if coincides with Labour day, moves to 2nd Monday
                var facDay = DateTimeFactory.FindNextDay(year, 9, 25, DayOfWeek.Monday);
                if (facDay == DateTimeFactory.FindNextDay(year, 10, 1, DayOfWeek.Monday))
                {
                    facDay = facDay.AddDays(7);
                }
                calculationDay = facDay;
            }

            return(DailyAnswerBuilder
                   .Create(Name, HolidayType)
                   .From(calculationDay)
                   .Country(Country.ToCode(), GetRegionCodeList())
                   .I18N(I18NIdentityCode)
                   .Build(year));
        }
Beispiel #2
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var calculationDay = DateTimeFactory.Create(year, 9, 24);

            if (calculationDay.DayOfWeek == DayOfWeek.Sunday)
            {
                calculationDay = DateTimeFactory.FindNextDay(calculationDay, DayOfWeek.Monday);
            }

            var builder = DailyAnswerBuilder
                          .Create(Name, HolidayType)
                          .From(calculationDay);

            if (Since.HasValue)
            {
                builder.Since(Since.Value);
            }

            if (End.HasValue)
            {
                builder.End(End.Value);
            }

            if (TimeStepValue.HasValue)
            {
                builder.Times(TimeStepValue.Value);
            }

            builder.Country(Country.ToCode(), GetRegionCodeList());

            return(builder.I18N(I18NIdentityCode).Build(year));
        }
 /// <inheritdoc />
 public override DailyAnswer ToDailyAnswer(int year)
 {
     return(DailyAnswerBuilder
            .Create(Name, HolidayType)
            .From(DateTimeFactory.FindNextDay(year, 3, 1, DayOfWeek.Monday).AddDays(7))
            .Country(Country.ToCode(), GetRegionCodeList())
            .I18N(I18NIdentityCode)
            .Build(year));
 }
Beispiel #4
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var calculationDay = DateTimeFactory.FindNextDay(year, 4, 19, DayOfWeek.Thursday);

            var builder = DailyAnswerBuilder
                          .Create(Name, HolidayType)
                          .From(calculationDay)
                          .Country(Country.ToCode(), GetRegionCodeList())
                          .I18N(I18NIdentityCode);

            return(builder.Build(year));
        }
Beispiel #5
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var calculationDay = DateTimeFactory.Create(year, 1, 1);

            //当元旦为周末时,使用 Region 定义器来定义
            if (WeekendManager.GetWeekendDictionary(CountryCode.GB).IsWeekend(calculationDay))
            {
                calculationDay = DateTimeFactory.FindNextDay(year, 1, 1, DayOfWeek.Monday);
                return(DailyAnswerBuilder
                       .Create(Name, HolidayType)
                       .From(calculationDay)
                       .Country(Country.ToCode(), GetRegionCodeList())
                       .I18N(I18NIdentityCode)
                       .Build(year));
            }

            return(null);
        }
Beispiel #6
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            DateTime calculationTime;

            if (year == 2012 || year >= 2016)
            {
                calculationTime = DateTimeFactory.FindNextDay(year, 10, 1, DayOfWeek.Monday);
            }
            else
            {
                calculationTime = DateTimeFactory.OffsetByWeek(year, 6, 2, DayOfWeek.Monday);
            }

            return(DailyAnswerBuilder
                   .Create(Name, HolidayType)
                   .From(calculationTime)
                   .Country(Country.ToCode(), GetRegionCodeList())
                   .I18N(I18NIdentityCode)
                   .Build(year));
        }