Esempio n. 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);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Solar solar = new Solar(2020, 1, 1);

            Console.WriteLine(solar);
            Console.WriteLine(solar.toFullString());

            Lunar lunar = solar.getLunar();

            Console.WriteLine(lunar);
            Console.WriteLine(lunar.toFullString());

            foreach (string s in lunar.getBaZi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();
            foreach (string s in lunar.getBaZiNaYin())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            foreach (string s in lunar.getBaZiShiShenGan())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            foreach (string s in lunar.getBaZiShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            foreach (string s in lunar.getBaZiWuXing())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            List <Holiday> holidays = HolidayUtil.getHolidays(2012);

            foreach (Holiday holiday in holidays)
            {
                Console.WriteLine(holiday);
            }

            Console.ReadLine();
        }
        public void testFix()
        {
            Assert.AreEqual("2020-01-01 元旦节 2020-01-01", HolidayUtil.getHoliday("2020-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");

            // 将2020-01-01修改为春节
            HolidayUtil.fix("202001011120200101");
            Assert.AreEqual("2020-01-01 春节 2020-01-01", HolidayUtil.getHoliday("2020-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");

            // 追加2099-01-01为元旦节
            HolidayUtil.fix("209901010120990101");
            Assert.AreEqual("2099-01-01 元旦节 2099-01-01", HolidayUtil.getHoliday("2099-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");

            // 将2020-01-01修改为春节,并追加2099-01-01为元旦节
            HolidayUtil.fix("202001011120200101209901010120990101");
            Assert.AreEqual("2020-01-01 春节 2020-01-01", HolidayUtil.getHoliday("2020-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");
            Assert.AreEqual("2099-01-01 元旦节 2099-01-01", HolidayUtil.getHoliday("2099-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");

            // 更改节假日名称
            string[] names = HolidayUtil.NAMES;
            names[0] = "元旦";
            names[1] = "大年初一";

            HolidayUtil.fix(names, null);
            Assert.AreEqual("2020-01-01 大年初一 2020-01-01", HolidayUtil.getHoliday("2020-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");
            Assert.AreEqual("2099-01-01 元旦 2099-01-01", HolidayUtil.getHoliday("2099-01-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");

            // 追加节假日名称和数据
            names = new string[12];
            for (int i = 0, j = HolidayUtil.NAMES.Length; i < j; i++)
            {
                names[i] = HolidayUtil.NAMES[i];
            }
            names[9]  = "我的生日";
            names[10] = "结婚纪念日";
            names[11] = "她的生日";

            HolidayUtil.fix(names, "20210529912021052920211111:12021111120211201;120211201");
            Assert.AreEqual("2021-05-29 我的生日 2021-05-29", HolidayUtil.getHoliday("2021-05-29") + "", "LunarCore.util.HolidayUtil.fix 有错。");
            Assert.AreEqual("2021-11-11 结婚纪念日 2021-11-11", HolidayUtil.getHoliday("2021-11-11") + "", "LunarCore.util.HolidayUtil.fix 有错。");
            Assert.AreEqual("2021-12-01 她的生日 2021-12-01", HolidayUtil.getHoliday("2021-12-01") + "", "LunarCore.util.HolidayUtil.fix 有错。");
        }
Esempio n. 4
0
        /// <summary>
        /// 获取往后推几天的阳历日期,如果要往前推,则天数用负数
        /// </summary>
        /// <param name="days">天数</param>
        /// <param name="onlyWorkday">是否仅工作日</param>
        /// <returns>阳历日期</returns>
        public Solar next(int days, bool onlyWorkday)
        {
            DateTime c = new DateTime(year, month, day, hour, minute, second);

            if (0 != days)
            {
                if (!onlyWorkday)
                {
                    c = c.AddDays(days);
                }
                else
                {
                    int rest = Math.Abs(days);
                    int add  = days < 1 ? -1 : 1;
                    while (rest > 0)
                    {
                        c = c.AddDays(add);
                        bool    work    = true;
                        Holiday holiday = HolidayUtil.getHoliday(c.Year, c.Month, c.Day);
                        if (null == holiday)
                        {
                            string week = c.DayOfWeek.ToString("d");
                            if ("0".Equals(week) || "6".Equals(week))
                            {
                                work = false;
                            }
                        }
                        else
                        {
                            work = holiday.isWork();
                        }
                        if (work)
                        {
                            rest--;
                        }
                    }
                }
            }
            return(new Solar(c));
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            // ÑôÀú
            Solar solar = new Solar(2020, 5, 26, 23, 42, 0);

            Console.WriteLine(solar);
            Console.WriteLine(solar.toFullString());

            // ÒõÀú
            Lunar lunar = solar.getLunar();

            Console.WriteLine(lunar);
            Console.WriteLine(lunar.toFullString());

            // °Ë×Ö
            EightChar baZi = lunar.getEightChar();

            Console.WriteLine(baZi.getYear() + " " + baZi.getMonth() + " " + baZi.getDay() + " " + baZi.getTime());

            // °Ë×ÖÄÉÒô
            Console.WriteLine(baZi.getYearNaYin() + " " + baZi.getMonthNaYin() + " " + baZi.getDayNaYin() + " " + baZi.getTimeNaYin());

            // °Ë×ÖÎåÐÐ
            Console.WriteLine(baZi.getYearWuXing() + " " + baZi.getMonthWuXing() + " " + baZi.getDayWuXing() + " " + baZi.getTimeWuXing());

            // °Ë×ÖÌì¸ÉÊ®Éñ
            Console.WriteLine(baZi.getYearShiShenGan() + " " + baZi.getMonthShiShenGan() + " " + baZi.getDayShiShenGan() + " " + baZi.getTimeShiShenGan());

            // °Ë×ÖµØ֧ʮÉñ
            Console.WriteLine(baZi.getYearShiShenZhi()[0] + " " + baZi.getMonthShiShenZhi()[0] + " " + baZi.getDayShiShenZhi()[0] + " " + baZi.getTimeShiShenZhi()[0]);

            // °Ë×ÖÄê֧ʮÉñ
            foreach (string s in baZi.getYearShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // °Ë×ÖÔÂ֧ʮÉñ
            foreach (string s in baZi.getMonthShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // °Ë×ÖÈÕ֧ʮÉñ
            foreach (string s in baZi.getDayShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // °Ë×Öʱ֧ʮÉñ
            foreach (string s in baZi.getTimeShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // °Ë×ÖÌ¥Ôª
            Console.WriteLine(baZi.getTaiYuan());

            // °Ë×ÖÃü¹¬
            Console.WriteLine(baZi.getMingGong());

            // °Ë×ÖÉí¹¬
            Console.WriteLine(baZi.getShenGong());

            // ½Ú¼ÙÈÕ
            List <Holiday> holidays = HolidayUtil.getHolidays(2012);

            foreach (Holiday holiday in holidays)
            {
                Console.WriteLine(holiday);
            }
            Console.WriteLine();

            // °Ë×ÖתÑôÀú
            List <Solar> solars = Solar.fromBaZi("¸ý×Ó", "Îì×Ó", "¼ºÃ®", "¸ýÎç");

            foreach (Solar d in solars)
            {
                Console.WriteLine(d.toFullString());
            }
            Console.WriteLine();

            Console.ReadLine();
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            // 阳历
            Solar solar = new Solar(2020, 5, 26, 23, 42, 0);

            Console.WriteLine(solar);
            Console.WriteLine(solar.toFullString());

            // 阴历
            Lunar lunar = solar.getLunar();

            Console.WriteLine(lunar);
            Console.WriteLine(lunar.toFullString());

            // 八字
            EightChar baZi = lunar.getEightChar();

            Console.WriteLine(baZi.getYear() + " " + baZi.getMonth() + " " + baZi.getDay() + " " + baZi.getTime());

            // 八字纳音
            Console.WriteLine(baZi.getYearNaYin() + " " + baZi.getMonthNaYin() + " " + baZi.getDayNaYin() + " " + baZi.getTimeNaYin());

            // 八字五行
            Console.WriteLine(baZi.getYearWuXing() + " " + baZi.getMonthWuXing() + " " + baZi.getDayWuXing() + " " + baZi.getTimeWuXing());

            // 八字天干十神
            Console.WriteLine(baZi.getYearShiShenGan() + " " + baZi.getMonthShiShenGan() + " " + baZi.getDayShiShenGan() + " " + baZi.getTimeShiShenGan());

            // 八字地支十神
            Console.WriteLine(baZi.getYearShiShenZhi()[0] + " " + baZi.getMonthShiShenZhi()[0] + " " + baZi.getDayShiShenZhi()[0] + " " + baZi.getTimeShiShenZhi()[0]);

            // 八字年支十神
            foreach (string s in baZi.getYearShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // 八字月支十神
            foreach (string s in baZi.getMonthShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // 八字日支十神
            foreach (string s in baZi.getDayShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // 八字时支十神
            foreach (string s in baZi.getTimeShiShenZhi())
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // 八字胎元
            Console.WriteLine(baZi.getTaiYuan());

            // 八字命宫
            Console.WriteLine(baZi.getMingGong());

            // 八字身宫
            Console.WriteLine(baZi.getShenGong());

            Console.WriteLine();
            solar = new Solar(1988, 3, 20, 18, 0, 0);
            lunar = solar.getLunar();
            EightChar bazi = lunar.getEightChar();

            // 男运
            Yun yun = bazi.getYun(1);

            Console.WriteLine("阳历" + solar.toYmdHms() + "出生");
            Console.WriteLine("出生" + yun.getStartYear() + "年" + yun.getStartMonth() + "个月" + yun.getStartDay() + "天后起运");
            Console.WriteLine("阳历" + yun.getStartSolar().toYmd() + "后起运");
            Console.WriteLine();

            // 节假日
            List <Holiday> holidays = HolidayUtil.getHolidays(2012);

            foreach (Holiday holiday in holidays)
            {
                Console.WriteLine(holiday);
            }
            Console.WriteLine();

            // 八字转阳历
            List <Solar> solars = Solar.fromBaZi("庚子", "戊子", "己卯", "庚午");

            foreach (Solar d in solars)
            {
                Console.WriteLine(d.toFullString());
            }
            Console.WriteLine();

            Console.ReadLine();
        }