/// <summary> /// 得到精简日期信息(不含节日) /// </summary> /// <param name="d">待检查的日子</param> /// <returns>日期信息</returns> public StructDateFullInfo GetDateTidyInfo(DateTime d) { StructDateFullInfo dayinfo; structDate day = GetLunar(d); dayinfo.IsLeap = day.isLeap; dayinfo.Year = d.Year; dayinfo.Cyear = day.year; dayinfo.Scyear = animals[(day.year - 4) % 12]; dayinfo.CyearCyl = Cyclical(day.yearCyl);//干支年 dayinfo.Month = d.Month; dayinfo.Cmonth = day.month; dayinfo.Scmonth = cMonthName[day.month]; dayinfo.CmonthCyl = Cyclical(day.monthCyl);//干支月 dayinfo.Day = d.Day; dayinfo.Cday = day.day; dayinfo.Scday = GetCDay(day.day); //日子 dayinfo.CdayCyl = Cyclical(day.dayCyl); //干支日 switch (d.DayOfWeek) { case DayOfWeek.Sunday: dayinfo.DayInWeek = "星期日"; break; case DayOfWeek.Monday: dayinfo.DayInWeek = "星期一"; break; case DayOfWeek.Tuesday: dayinfo.DayInWeek = "星期二"; break; case DayOfWeek.Wednesday: dayinfo.DayInWeek = "星期三"; break; case DayOfWeek.Thursday: dayinfo.DayInWeek = "星期四"; break; case DayOfWeek.Friday: dayinfo.DayInWeek = "星期五"; break; case DayOfWeek.Saturday: dayinfo.DayInWeek = "星期六"; break; default: dayinfo.DayInWeek = "星期?"; break; } dayinfo.Info = ""; dayinfo.Feast = ""; dayinfo.Image = ""; dayinfo.SayHello = false; //节气 //每个月有两个节气 int d1 = GetSolarTermDay(d.Year, d.Month * 2 - 1); int d2 = GetSolarTermDay(d.Year, d.Month * 2); if (dayinfo.Day == d1) { dayinfo.solarterm = solarTerm[d.Month * 2 - 2]; } else if (dayinfo.Day == d2) { dayinfo.solarterm = solarTerm[d.Month * 2 - 1]; } else { dayinfo.solarterm = ""; } dayinfo.Fullinfo = dayinfo.Year.ToString() + "年" + dayinfo.Month.ToString() + "月" + dayinfo.Day.ToString() + "日"; dayinfo.Fullinfo += " " + dayinfo.DayInWeek; dayinfo.Fullinfo += " 农历" + dayinfo.CyearCyl + "(" + dayinfo.Scyear + ")年"; if (dayinfo.IsLeap) { dayinfo.Fullinfo += "闰"; } dayinfo.Fullinfo += dayinfo.Scmonth + dayinfo.Scday; if (dayinfo.solarterm != "") { dayinfo.Fullinfo += " " + dayinfo.solarterm; } return(dayinfo); }
/// <summary> /// 得到日期信息 /// </summary> /// <param name="d">待检查的日子</param> /// <returns>日期信息</returns> public StructDateFullInfo GetDateInfo(DateTime d) { string calendarXmlData = FileUtil.ReadFileFromEmbedded("STO.Print.Utilities." + "CCalendarData.xml"); StructDateFullInfo dayinfo; structDate day = GetLunar(d); dayinfo.IsLeap = day.isLeap; dayinfo.Year = d.Year; dayinfo.Cyear = day.year; dayinfo.Scyear = animals[(day.year - 4) % 12]; dayinfo.CyearCyl = Cyclical(day.yearCyl);//干支年 dayinfo.Month = d.Month; dayinfo.Cmonth = day.month; dayinfo.Scmonth = cMonthName[day.month]; dayinfo.CmonthCyl = Cyclical(day.monthCyl);//干支月 dayinfo.Day = d.Day; dayinfo.Cday = day.day; dayinfo.Scday = GetCDay(day.day); //日子 dayinfo.CdayCyl = Cyclical(day.dayCyl); //干支日 switch (d.DayOfWeek) { case DayOfWeek.Sunday: dayinfo.DayInWeek = "星期日"; break; case DayOfWeek.Monday: dayinfo.DayInWeek = "星期一"; break; case DayOfWeek.Tuesday: dayinfo.DayInWeek = "星期二"; break; case DayOfWeek.Wednesday: dayinfo.DayInWeek = "星期三"; break; case DayOfWeek.Thursday: dayinfo.DayInWeek = "星期四"; break; case DayOfWeek.Friday: dayinfo.DayInWeek = "星期五"; break; case DayOfWeek.Saturday: dayinfo.DayInWeek = "星期六"; break; default: dayinfo.DayInWeek = "星期?"; break; } //节气 //每个月有两个节气 int d1 = GetSolarTermDay(d.Year, d.Month * 2 - 1); int d2 = GetSolarTermDay(d.Year, d.Month * 2); if (dayinfo.Day == d1) { dayinfo.solarterm = solarTerm[d.Month * 2 - 2]; } else if (dayinfo.Day == d2) { dayinfo.solarterm = solarTerm[d.Month * 2 - 1]; } else { dayinfo.solarterm = ""; } //节日及问候语 dayinfo.Info = ""; dayinfo.Feast = ""; dayinfo.Image = ""; dayinfo.SayHello = false; XmlDocument feastdoc = new XmlDocument(); feastdoc.LoadXml(calendarXmlData); //公历 XmlNodeList nodeList = feastdoc.SelectNodes("descendant::AD/feast[@day='" + d.ToString("MMdd") + "']"); foreach (XmlNode root in nodeList) { dayinfo.Feast += root.Attributes["name"].InnerText + " "; if (root.Attributes["sayhello"].InnerText == "yes") {//需要显示节日问候语 dayinfo.Info = root["hello"].InnerText; //看看是否需要计算周年 if (root["startyear"] != null) { int startyear = Convert.ToInt32(root["startyear"].InnerText); dayinfo.Info = dayinfo.Info.Replace("_YEARS_", (d.Year - startyear).ToString()); } dayinfo.Image = root["img"].InnerText; dayinfo.SayHello = true; } } //农历 string smmdd = ""; smmdd = (dayinfo.Cmonth.ToString().Length == 2) ? dayinfo.Cmonth.ToString() : ("0" + dayinfo.Cmonth.ToString()); smmdd += (dayinfo.Cday.ToString().Length == 2) ? dayinfo.Cday.ToString() : ("0" + dayinfo.Cday.ToString()); XmlNode feast = feastdoc.SelectSingleNode("descendant::LUNAR/feast[@day='" + smmdd + "']"); if (feast != null) { dayinfo.Feast += feast.Attributes["name"].InnerText; if (feast.Attributes["sayhello"].InnerText == "yes") {//需要显示节日问候语 dayinfo.Info += feast["hello"].InnerText; dayinfo.Image = feast["img"].InnerText; dayinfo.SayHello = true; } } //普通日子或没有庆贺语 if (dayinfo.Info == "") { feast = feastdoc.SelectSingleNode("descendant::NORMAL/day[@time1<'" + d.ToString("HHmm") + "']"); if (feast != null) { dayinfo.Info = feast["hello"].InnerText; dayinfo.Image = feast["img"].InnerText; } } dayinfo.Fullinfo = dayinfo.Year.ToString() + "年" + dayinfo.Month.ToString() + "月" + dayinfo.Day.ToString() + "日"; dayinfo.Fullinfo += dayinfo.DayInWeek; dayinfo.Fullinfo += " 农历" + dayinfo.CyearCyl + "[" + dayinfo.Scyear + "]年"; if (dayinfo.IsLeap) { dayinfo.Fullinfo += "闰"; } dayinfo.Fullinfo += dayinfo.Scmonth + dayinfo.Scday; if (dayinfo.solarterm != "") { dayinfo.Fullinfo += " " + dayinfo.solarterm; } return(dayinfo); }