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); }
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 有错。"); }
/// <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)); }
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(); }
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(); }