1
0
mirror of synced 2026-10-14 02:26:11 +08:00

修复星宿计算错误的问题;增加农历星期的获取。

This commit is contained in:
6tail
2020-04-06 12:50:42 +08:00
parent 18a6a0a09a
commit e24cca9bf4
2 changed files with 125 additions and 37 deletions

View File

@@ -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);

View File

@@ -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<String,String> XIU = new HashMap<String,String>(){
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<String,String> SHOU = new HashMap<String,String>(){
@@ -210,7 +280,7 @@ public class LunarUtil{
put("北","玄武");
}
};
/** 冲,即地支冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲 */
/** 地支相冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲 */
public static final Map<String,String> CHONG = new HashMap<String,String>(){
private static final long serialVersionUID = -1;
{