1
0
mirror of synced 2025-12-16 02:17:59 +08:00

增加支持值月、值日、值时九星。

This commit is contained in:
6tail
2020-07-09 22:02:01 +08:00
parent 37cc9cb4ca
commit fd2954f5e0
3 changed files with 102 additions and 2 deletions

View File

@@ -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 节气表

View File

@@ -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 序号

View File

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