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); }
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 })); }