コード例 #1
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var calculationDay = DateTimeFactory.FindLastDay(year, 5, DayOfWeek.Monday);

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

            calculationDay = OccurrenceHelper.FindOccurrenceOfDayOfWeek(calculationDay, DayOfWeek.Monday, 3);

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

            while (calculationDay.DayOfWeek != DayOfWeek.Monday)
            {
                calculationDay = calculationDay.AddDays(-1);
            }

            return(DailyAnswerBuilder
                   .Create(Name, HolidayType)
                   .From(calculationDay)
                   .Country(Country.ToCode(), GetRegionCodeList())
                   .I18N(I18NIdentityCode)
                   .Build(year));
        }
コード例 #4
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var builder = DailyAnswerBuilder.Create(Name, HolidayType);

            switch (year)
            {
            case 2016:
                builder.From(2016, 8, 25);
                break;

            case 2017:
                builder.From(2017, 8, 14);
                break;

            case 2018:
                builder.From(2018, 9, 2);
                break;

            case 2020:
                builder.From(2020, 8, 11);
                break;

            default:
                builder.From(year, 8, 24);
                break;
            }

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

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

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

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

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

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

            return(null);
        }
コード例 #6
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var date   = ChineseDateInfo.Of(year, 4, 1);
            var date15 = date.AddDays(-15);

            while (true)
            {
                if (date15.GetSolarTerm() == "春分")
                {
                    break;
                }
                date   = date.Tomorrow();
                date15 = date15.Tomorrow();
            }

            return(DailyAnswerBuilder.Create(Name, HolidayType).From(date.ToDateTime()).I18N(I18NIdentityCode).Build(year));
        }
コード例 #7
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            if ((year - 2) % 6 == 0)
            {
                var date = DateTimeFactory.Create(year, 12, 1)
                           .Shift(saturday => saturday.AddDays(-1), sunday => sunday.AddDays(1));

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

            return(null);
        }
コード例 #8
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));
        }
コード例 #9
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            DateTime calculationDay;

            if (year == 2020)
            {
                //https://www.bbc.co.uk/news/uk-48565417
                calculationDay = DateTimeFactory.FindDay(year, 5, DayOfWeek.Friday, 2);
            }
            else
            {
                calculationDay = DateTimeFactory.OffsetByWeek(year, 5, 2, DayOfWeek.Monday);
            }

            return(DailyAnswerBuilder
                   .Create(Name, HolidayType)
                   .From(calculationDay)
                   .Country(Country.ToCode(), GetRegionCodeList())
                   .I18N(I18NIdentityCode)
                   .Build(year));
        }
コード例 #10
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            var  caculationDate   = DateTimeFactory.Create(year, 12, 26);
            bool isSundayOrMonday =
                caculationDate.DayOfWeek == DayOfWeek.Sunday ||
                caculationDate.DayOfWeek == DayOfWeek.Monday;

            caculationDate = caculationDate.Shift(saturday => saturday.AddDays(2), sunday => sunday.AddDays(1));

            if (isSundayOrMonday)
            {
                caculationDate = caculationDate.AddDays(1);
            }

            return(DailyAnswerBuilder
                   .Create(Name, HolidayType)
                   .From(caculationDate)
                   .Country(Country.ToCode(), GetRegionCodeList())
                   .I18N(I18NIdentityCode)
                   .Build(year));
        }
コード例 #11
0
        /// <inheritdoc />
        public override DailyAnswer ToDailyAnswer(int year)
        {
            if ((year - 1) % 4 == 0)
            {
                DailyAnswerBuilder builder;
                if (year >= 1937)
                {
                    builder = DailyAnswerBuilder.Create(Name, HolidayType).From(year, 1, 20);
                }
                else
                {
                    builder = DailyAnswerBuilder.Create(Name, HolidayType).From(year, 3, 4);
                }

                return(builder
                       .Country(Country.ToCode(), GetRegionCodeList())
                       .I18N(I18NIdentityCode)
                       .Build(year));
            }

            return(null);
        }