diff --git a/src/main/java/com/nlf/calendar/Lunar.java b/src/main/java/com/nlf/calendar/Lunar.java index d419e48..f75f5ff 100644 --- a/src/main/java/com/nlf/calendar/Lunar.java +++ b/src/main/java/com/nlf/calendar/Lunar.java @@ -330,13 +330,31 @@ public class Lunar{ return s; } + /** + * 获取星期,0代表周日,1代表周一 + * + * @return 0123456 + */ + public int getWeek(){ + return (dayOffset+LunarUtil.BASE_WEEK_INDEX)%7; + } + + /** + * 获取星期的中文 + * + * @return 日一二三四五六 + */ + public String getWeekInChinese(){ + return SolarUtil.WEEK[getWeek()]; + } + /** * 获取宿 * * @return 宿 */ public String getXiu(){ - return LunarUtil.XIU[day-1][Math.abs(month)-1]; + return LunarUtil.XIU.get(getDayZhi()+getWeek()); } /** @@ -659,14 +677,14 @@ public class Lunar{ s.append(getDayInGanZhi()); s.append("("); s.append(getDayShengXiao()); - s.append(")日"); - s.append(" 纳音["); + s.append(")日 纳音["); s.append(getYearNaYin()); s.append(" "); s.append(getMonthNaYin()); s.append(" "); s.append(getDayNaYin()); - s.append("]"); + s.append("] 星期"); + s.append(getWeekInChinese()); for(String f:getFestivals()){ s.append(" ("); s.append(f); diff --git a/src/main/java/com/nlf/calendar/util/LunarUtil.java b/src/main/java/com/nlf/calendar/util/LunarUtil.java index d6dbd26..078aefd 100644 --- a/src/main/java/com/nlf/calendar/util/LunarUtil.java +++ b/src/main/java/com/nlf/calendar/util/LunarUtil.java @@ -21,6 +21,8 @@ public class LunarUtil{ public static final int BASE_DAY_GANZHI_INDEX = 15; /** 月份地支偏移量,因正月起寅 */ public static final int BASE_MONTH_ZHI_INDEX = 2; + /** 星期偏移量 */ + public static final int BASE_WEEK_INDEX = 2; /** 闰年表 */ public static final int[] LEAP_MONTH_YEAR = {6,14,19,25,33,36,38,41,44,52,55,79,117,136,147,150,155,158,185,193}; /** 闰月表 */ @@ -167,38 +169,106 @@ public class LunarUtil{ put("12-29",Collections.nCopies(1,"华严菩萨诞")); } }; - /** 宿 */ - public static final String[][] XIU = { - {"室","奎","胃","毕","参","鬼","张","角","氐","心","斗","虚"}, - {"壁","娄","昴","觜","井","柳","翼","亢","房","尾","女","危"}, - {"奎","胃","毕","参","鬼","星","轸","氐","心","箕","虚","室"}, - {"娄","昴","觜","井","柳","张","角","房","尾","斗","危","壁"}, - {"胃","毕","参","鬼","星","翼","亢","心","箕","女","室","奎"}, - {"昴","觜","井","柳","张","轸","氐","尾","斗","虚","壁","娄"}, - {"毕","参","鬼","星","翼","角","房","箕","女","危","奎","胃"}, - {"觜","井","柳","张","轸","亢","心","斗","虚","室","娄","昴"}, - {"参","鬼","星","翼","角","氐","尾","女","危","壁","胃","毕"}, - {"井","柳","张","轸","亢","房","箕","虚","室","奎","昴","觜"}, - {"鬼","星","翼","角","氐","心","斗","危","壁","娄","毕","参"}, - {"柳","张","轸","亢","房","尾","女","室","奎","胃","觜","井"}, - {"星","翼","角","氐","心","箕","虚","壁","娄","昴","参","鬼"}, - {"张","轸","亢","房","尾","斗","危","奎","胃","毕","井","柳"}, - {"翼","角","氐","心","箕","女","室","娄","昴","觜","鬼","星"}, - {"轸","亢","房","尾","斗","虚","壁","胃","毕","参","柳","张"}, - {"角","氐","心","箕","女","危","奎","昴","觜","井","星","翼"}, - {"亢","房","尾","斗","虚","室","娄","毕","参","鬼","张","轸"}, - {"氐","心","箕","女","危","壁","胃","觜","井","柳","翼","角"}, - {"房","尾","斗","虚","室","奎","昴","参","鬼","星","轸","亢"}, - {"心","箕","女","危","壁","娄","毕","井","柳","张","角","氐"}, - {"尾","斗","虚","室","奎","胃","觜","鬼","星","翼","亢","房"}, - {"箕","女","危","壁","娄","昴","参","柳","张","轸","氐","心"}, - {"斗","虚","室","奎","胃","毕","井","星","翼","角","房","尾"}, - {"女","危","壁","娄","昴","觜","鬼","张","轸","亢","心","箕"}, - {"虚","室","奎","胃","毕","参","柳","翼","角","氐","尾","斗"}, - {"危","壁","娄","昴","觜","井","星","轸","亢","房","箕","女"}, - {"室","奎","胃","毕","参","鬼","张","角","氐","心","斗","虚"}, - {"壁","娄","昴","觜","井","柳","翼","亢","房","尾","女","危"}, - {"胃","鬼","氐","心","虚","星","轸","氐","心","箕","虚","室"} + /** 28星宿对照表,地支+星期 */ + public static final Map XIU = new HashMap(){ + private static final long serialVersionUID = -1; + { + put("申1","毕"); + put("申2","翌"); + put("申3","箕"); + put("申4","奎"); + put("申5","鬼"); + put("申6","氐"); + put("申0","虚"); + + put("子1","毕"); + put("子2","翌"); + put("子3","箕"); + put("子4","奎"); + put("子5","鬼"); + put("子6","氐"); + put("子0","虚"); + + put("辰1","毕"); + put("辰2","翌"); + put("辰3","箕"); + put("辰4","奎"); + put("辰5","鬼"); + put("辰6","氐"); + put("辰0","虚"); + + put("巳1","危"); + put("巳2","觜"); + put("巳3","轸"); + put("巳4","斗"); + put("巳5","娄"); + put("巳6","柳"); + put("巳0","房"); + + put("酉1","危"); + put("酉2","觜"); + put("酉3","轸"); + put("酉4","斗"); + put("酉5","娄"); + put("酉6","柳"); + put("酉0","房"); + + put("丑1","危"); + put("丑2","觜"); + put("丑3","轸"); + put("丑4","斗"); + put("丑5","娄"); + put("丑6","柳"); + put("丑0","房"); + + put("寅1","心"); + put("寅2","室"); + put("寅3","参"); + put("寅4","角"); + put("寅5","牛"); + put("寅6","胃"); + put("寅0","星"); + + put("午1","心"); + put("午2","室"); + put("午3","参"); + put("午4","角"); + put("午5","牛"); + put("午6","胃"); + put("午0","星"); + + put("戌1","心"); + put("戌2","室"); + put("戌3","参"); + put("戌4","角"); + put("戌5","牛"); + put("戌6","胃"); + put("戌0","星"); + + put("亥1","张"); + put("亥2","尾"); + put("亥3","壁"); + put("亥4","井"); + put("亥5","亢"); + put("亥6","女"); + put("亥0","昴"); + + put("卯1","张"); + put("卯2","尾"); + put("卯3","壁"); + put("卯4","井"); + put("卯5","亢"); + put("卯6","女"); + put("卯0","昴"); + + put("未1","张"); + put("未2","尾"); + put("未3","壁"); + put("未4","井"); + put("未5","亢"); + put("未6","女"); + put("未0","昴"); + } }; /** 兽 */ public static final Map SHOU = new HashMap(){ @@ -210,7 +280,7 @@ public class LunarUtil{ put("北","玄武"); } }; - /** 冲,即地支冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲 */ + /** 地支相冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲 */ public static final Map CHONG = new HashMap(){ private static final long serialVersionUID = -1; {