增加支持值月、值日、值时九星。
This commit is contained in:
@@ -1541,7 +1541,7 @@ public class Lunar{
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值年九星
|
||||
* 获取值年九星(流年紫白星起例歌诀:年上吉星论甲子,逐年星逆中宫起;上中下作三元汇,一上四中七下兑。)
|
||||
* @return 值年九星
|
||||
*/
|
||||
public NineStar getYearNineStar(){
|
||||
@@ -1552,6 +1552,95 @@ public class Lunar{
|
||||
return new NineStar(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值月九星(月紫白星歌诀:子午卯酉八白起,寅申巳亥二黑求,辰戌丑未五黄中。)
|
||||
* @return 值月九星
|
||||
*/
|
||||
public NineStar getMonthNineStar(){
|
||||
int start = 2;
|
||||
String yearZhi = getYearZhi();
|
||||
if ("子午卯酉".contains(yearZhi)) {
|
||||
start = 8;
|
||||
} else if ("辰戌丑未".contains(yearZhi)) {
|
||||
start = 5;
|
||||
}
|
||||
// 寅月起,所以需要-2
|
||||
int monthIndex = monthZhiIndex-2;
|
||||
int index = start-monthIndex-1;
|
||||
if(index<0){
|
||||
index += 9;
|
||||
}
|
||||
return new NineStar(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值日九星(日家紫白星歌诀:日家白法不难求,二十四气六宫周;冬至雨水及谷雨,阳顺一七四中游;夏至处暑霜降后,九三六星逆行求。)
|
||||
* @return 值日九星
|
||||
*/
|
||||
public NineStar getDayNineStar(){
|
||||
//顺逆
|
||||
String solarYmd = solar.toYmd();
|
||||
String yuShui = jieQi.get("雨水").toYmd();
|
||||
String guYu = jieQi.get("谷雨").toYmd();
|
||||
String xiaZhi = jieQi.get("夏至").toYmd();
|
||||
String chuShu = jieQi.get("处暑").toYmd();
|
||||
String shuangJiang = jieQi.get("霜降").toYmd();
|
||||
|
||||
int start = 6;
|
||||
boolean asc = false;
|
||||
if(solarYmd.compareTo(jieQi.get("冬至").toYmd())>=0 && solarYmd.compareTo(yuShui)<0){
|
||||
asc = true;
|
||||
start = 1;
|
||||
} else if(solarYmd.compareTo(yuShui)>=0 && solarYmd.compareTo(guYu)<0){
|
||||
asc = true;
|
||||
start = 7;
|
||||
} else if(solarYmd.compareTo(guYu)>=0 && solarYmd.compareTo(xiaZhi)<0){
|
||||
asc = true;
|
||||
start = 4;
|
||||
} else if(solarYmd.compareTo(xiaZhi)>=0 && solarYmd.compareTo(chuShu)<0){
|
||||
start = 9;
|
||||
} else if(solarYmd.compareTo(chuShu)>=0 && solarYmd.compareTo(shuangJiang)<0){
|
||||
start = 3;
|
||||
}
|
||||
int ganZhiIndex = LunarUtil.getJiaZiIndex(getDayInGanZhi())%9;
|
||||
int index = asc?start+ganZhiIndex-1:start-ganZhiIndex-1;
|
||||
if(index>8){
|
||||
index -= 9;
|
||||
}
|
||||
if(index<0){
|
||||
index += 9;
|
||||
}
|
||||
return new NineStar(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值时九星(时家紫白星歌诀:三元时白最为佳,冬至阳生顺莫差,孟日七宫仲一白,季日四绿发萌芽,每把时辰起甲子,本时星耀照光华,时星移入中宫去,顺飞八方逐细查。夏至阴生逆回首,孟归三碧季加六,仲在九宫时起甲,依然掌中逆轮跨。)
|
||||
* @return 值时九星
|
||||
*/
|
||||
public NineStar getTimeNineStar(){
|
||||
//顺逆
|
||||
String solarYmd = solar.toYmd();
|
||||
boolean asc = false;
|
||||
if(solarYmd.compareTo(jieQi.get("冬至").toYmd())>=0 && solarYmd.compareTo(jieQi.get("夏至").toYmd())<0){
|
||||
asc = true;
|
||||
}
|
||||
int start = asc?7:3;
|
||||
String dayZhi = getDayZhi();
|
||||
if ("子午卯酉".contains(dayZhi)) {
|
||||
start = asc?1:9;
|
||||
} else if ("辰戌丑未".contains(dayZhi)) {
|
||||
start = asc?4:6;
|
||||
}
|
||||
int index = asc?start+timeZhiIndex-1:start-timeZhiIndex-1;
|
||||
if(index>8){
|
||||
index -= 9;
|
||||
}
|
||||
if(index<0){
|
||||
index += 9;
|
||||
}
|
||||
return new NineStar(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取节气表(节气名称:阳历),节气交接时刻精确到秒,以冬至开头,按先后顺序排列
|
||||
* @return 节气表
|
||||
|
||||
@@ -39,6 +39,9 @@ public class NineStar {
|
||||
/** 太乙九神对应类型 */
|
||||
public static final String[] TYPE_TAI_YI = {"吉神","凶神","安神","安神","凶神","吉神","凶神","吉神","吉神"};
|
||||
|
||||
/** 太乙九神歌诀(太乙神数) */
|
||||
public static final String[] SONG_TAI_YI = {"门中太乙明,星官号贪狼,赌彩财喜旺,婚姻大吉昌,出入无阻挡,参谒见贤良,此行三五里,黑衣别阴阳。","门前见摄提,百事必忧疑,相生犹自可,相克祸必临,死门并相会,老妇哭悲啼,求谋并吉事,尽皆不相宜,只可藏隐遁,若动伤身疾。","出入会轩辕,凡事必缠牵,相生全不美,相克更忧煎,远行多不利,博彩尽输钱,九天玄女法,句句不虚言。","招摇号木星,当之事莫行,相克行人阻,阴人口舌迎,梦寐多惊惧,屋响斧自鸣,阴阳消息理,万法弗违情。","五鬼为天符,当门阴女谋,相克无好事,行路阻中途,走失难寻觅,道逢有尼姑,此星当门值,万事有灾除。","神光跃青龙,财气喜重重,投入有酒食,赌彩最兴隆,更逢相生旺,休言克破凶,见贵安营寨,万事总吉同。","吾将为咸池,当之尽不宜,出入多不利,相克有灾情,赌彩全输尽,求财空手回,仙人真妙语,愚人莫与知,动用虚惊退,反复逆风吹。","坐临太阴星,百祸不相侵,求谋悉成就,知交有觅寻,回风归来路,恐有殃伏起,密语中记取,慎乎莫轻行。","迎来天乙星,相逢百事兴,运用和合庆,茶酒喜相迎,求谋并嫁娶,好合有天成,祸福如神验,吉凶甚分明。"};
|
||||
|
||||
/** 吉凶(玄空风水) */
|
||||
public static final String[] LUCK_XUAN_KONG = {"吉","凶","凶","吉","凶","吉","凶","吉","吉"};
|
||||
|
||||
@@ -168,6 +171,14 @@ public class NineStar {
|
||||
return BA_MEN_QI_MEN[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取太乙九神歌诀
|
||||
* @return 太乙九神歌诀
|
||||
*/
|
||||
public String getSongInTaiYi(){
|
||||
return SONG_TAI_YI[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取九星序号,从0开始
|
||||
* @return 序号
|
||||
|
||||
@@ -1242,7 +1242,7 @@ public class LunarUtil{
|
||||
* @param ganZhi 干支
|
||||
* @return 甲子序号
|
||||
*/
|
||||
private static int getJiaZiIndex(String ganZhi){
|
||||
public static int getJiaZiIndex(String ganZhi){
|
||||
for(int i=0,j=LunarUtil.JIA_ZI.length;i<j;i++){
|
||||
if(LunarUtil.JIA_ZI[i].equals(ganZhi)){
|
||||
return i;
|
||||
|
||||
Reference in New Issue
Block a user