コード例 #1
0
ファイル: CCalendar.cs プロジェクト: zanderzhg/STO.Print
        /// <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);
        }
コード例 #2
0
ファイル: CCalendar.cs プロジェクト: zanderzhg/STO.Print
        /// <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);
        }