Пример #1
0
        public static CalendarDate Build(DateTime solarDate)
        {
            var dest = new CalendarDate()
            {
                SolarDate = solarDate,
                SolarDay  = solarDate.Day
            };
            Solar solar = new Solar(solarDate);
            Lunar lunar = solar.getLunar();
            var   jieQi = lunar.getCurrentJieQi();

            if (jieQi != null)
            {
                dest.SolarTerm = jieQi.getName();
            }
            dest.LunarDay   = lunar.getDayInChinese();
            dest.LunarMonth = lunar.getMonthInChinese();
            var holidayList = HolidayUtil.getHolidaysByTarget(solarDate.Year, solarDate.Month, solarDate.Day);

            if (holidayList != null && holidayList.Count > 0)
            {
                var holidayStr = string.Join(" ", holidayList.Select(m => m.getName()));
                dest.Holiday = holidayStr;
            }


            return(dest);
        }
Пример #2
0
        public Task <CalendarInfo> GetMonthJson(DateTime date)
        {
            var monthStart  = new DateTime(date.Year, date.Month, 1);
            var firstWeek   = monthStart.DayOfWeek;
            var offsetCells = (int)firstWeek;

            var mainDays = new List <CalendarDate>();

            var validDaysCount = (int)(monthStart.AddMonths(1) - monthStart).TotalDays;

            for (int i = 0; i < validDaysCount; i++)
            {
                var thisDay = monthStart.AddDays(i);
                mainDays.Add(CalendarDate.Build(thisDay));
            }

            // 上个月不可用的日期
            var prependDays = new List <CalendarDate>();
            var preDate     = monthStart.AddDays(-offsetCells);

            while (preDate < monthStart)
            {
                prependDays.Add(CalendarDate.Build(preDate));
                preDate = preDate.AddDays(1);
            }
            ;

            // 下个月不可用的日期
            var appendDays = new List <CalendarDate>();

            var appendDate = monthStart.AddMonths(1);

            while (appendDate.DayOfWeek != DayOfWeek.Sunday)
            {
                appendDays.Add(CalendarDate.Build(appendDate));
                appendDate = appendDate.AddDays(1);
            }
            return(Task.FromResult(new CalendarInfo {
                MainDays = mainDays, AppendDays = appendDays, PrependDays = prependDays
            }));
        }