1
0
mirror of synced 2026-10-23 15:06:11 +08:00

增加纳音;优化代码。

This commit is contained in:
6tail
2020-04-05 12:41:46 +08:00
parent 3480e75356
commit 8247a909f3
6 changed files with 228 additions and 43 deletions

View File

@@ -136,29 +136,97 @@ public class Lunar{
* 获取年份的天干
*
* @return 天干,如辛
* @deprecated 使用getYearGan
*/
public String getGan(){
return LunarUtil.GAN[(year-4)%10+1];
}
/**
* 获取年份的天干
*
* @return 天干,如辛
*/
public String getYearGan(){
return LunarUtil.GAN[(year-4)%10+1];
}
/**
* 获取年份的地支
*
* @return 地支,如亥
* @deprecated 使用getYearZhi
*/
public String getZhi(){
return LunarUtil.ZHI[(year-4)%12+1];
}
/**
* 获取生肖
* 获取年份的地支
*
* @return 生肖,如虎
* @return 地支,如亥
*/
public String getYearZhi(){
return LunarUtil.ZHI[(year-4)%12+1];
}
/**
* 获取干支纪年
* @return 年份的干支,如辛亥
*/
public String getYearInGanZhi(){
return getYearGan()+getYearZhi();
}
/**
* 获取年生肖
*
* @return 年生肖,如虎
* @deprecated 使用getYearShengXiao
*/
public String getShengxiao(){
return LunarUtil.SHENGXIAO[(year-4)%12+1];
}
/**
* 获取年生肖
*
* @return 年生肖,如虎
*/
public String getYearShengXiao(){
return LunarUtil.SHENGXIAO[(year-4)%12+1];
}
/**
* 获取月生肖
*
* @return 月生肖,如虎
*/
public String getMonthShengXiao(){
String zhi = getMonthZhi();
for(int i=0,j=LunarUtil.ZHI.length;i<j;i++){
if(LunarUtil.ZHI[i].equals(zhi)){
return LunarUtil.SHENGXIAO[i];
}
}
return "";
}
/**
* 获取日生肖
*
* @return 日生肖,如虎
*/
public String getDayShengXiao(){
String zhi = getDayZhi();
for(int i=0,j=LunarUtil.ZHI.length;i<j;i++){
if(LunarUtil.ZHI[i].equals(zhi)){
return LunarUtil.SHENGXIAO[i];
}
}
return "";
}
/**
* 获取中文的年
*
@@ -352,12 +420,27 @@ public class Lunar{
* @return 干支纪月,如己卯
*/
public String getMonthInGanZhi(){
return getMonthGan()+getMonthZhi();
}
/**
* 获取月天干
* @return 月天干,如己
*/
public String getMonthGan(){
int m = Math.abs(month)-1;
int yearGanIndex = (year-4)%10;
int offset = (yearGanIndex%5+1)*2;
String monthGan = LunarUtil.GAN[(m+offset)%10+1];
String monthZhi = LunarUtil.ZHI[(m+LunarUtil.BASE_MONTH_ZHI_INDEX)%12+1];
return monthGan+monthZhi;
return LunarUtil.GAN[(m+offset)%10+1];
}
/**
* 获取月地支
* @return 月地支,如卯
*/
public String getMonthZhi(){
int m = Math.abs(month)-1;
return LunarUtil.ZHI[(m+LunarUtil.BASE_MONTH_ZHI_INDEX)%12+1];
}
/**
@@ -366,7 +449,25 @@ public class Lunar{
* @return 干支纪日,如己卯
*/
public String getDayInGanZhi(){
return LunarUtil.GAN[dayGanIndex+1]+LunarUtil.ZHI[dayZhiIndex+1];
return getDayGan()+getDayZhi();
}
/**
* 获取日天干
*
* @return 日天干,如甲
*/
public String getDayGan(){
return LunarUtil.GAN[dayGanIndex+1];
}
/**
* 获取日地支
*
* @return 日地支,如卯
*/
public String getDayZhi(){
return LunarUtil.ZHI[dayZhiIndex+1];
}
/**
@@ -470,7 +571,7 @@ public class Lunar{
* @return 冲,如申
*/
public String getChong(){
return LunarUtil.CHONG.get(LunarUtil.ZHI[dayZhiIndex+1]);
return LunarUtil.CHONG.get(getDayZhi());
}
/**
@@ -478,8 +579,7 @@ public class Lunar{
* @return 无情之克的冲天干,如甲
*/
public String getChongGan(){
String chong = LunarUtil.GAN[dayGanIndex+1];
return LunarUtil.CHONG_GAN.get(chong);
return LunarUtil.CHONG_GAN.get(getDayGan());
}
/**
@@ -487,8 +587,7 @@ public class Lunar{
* @return 有情之克的冲天干,如甲
*/
public String getChongGanTie(){
String chong = LunarUtil.GAN[dayGanIndex+1];
return LunarUtil.CHONG_GAN_TIE.get(chong);
return LunarUtil.CHONG_GAN_TIE.get(getDayGan());
}
/**
@@ -518,23 +617,56 @@ public class Lunar{
* @return 刹,如北
*/
public String getSha(){
return LunarUtil.SHA.get(LunarUtil.ZHI[dayZhiIndex+1]);
return LunarUtil.SHA.get(getDayZhi());
}
/**
* 获取年纳音
* @return 年纳音,如剑锋金
*/
public String getYearNaYin(){
return LunarUtil.NAYIN.get(getYearInGanZhi());
}
/**
* 获取月纳音
* @return 月纳音,如剑锋金
*/
public String getMonthNaYin(){
return LunarUtil.NAYIN.get(getMonthInGanZhi());
}
/**
* 获取日纳音
* @return 日纳音,如剑锋金
*/
public String getDayNaYin(){
return LunarUtil.NAYIN.get(getDayInGanZhi());
}
public String toFullString(){
StringBuilder s = new StringBuilder();
s.append(toString());
s.append(" ");
s.append(getGan());
s.append(getZhi());
s.append(getYearInGanZhi());
s.append("(");
s.append(getShengxiao());
s.append(")");
s.append("年");
s.append(getYearShengXiao());
s.append(")年 ");
s.append(getMonthInGanZhi());
s.append("月");
s.append("(");
s.append(getMonthShengXiao());
s.append(")月 ");
s.append(getDayInGanZhi());
s.append("日");
s.append("(");
s.append(getDayShengXiao());
s.append(")日");
s.append(" 纳音[");
s.append(getYearNaYin());
s.append(" ");
s.append(getMonthNaYin());
s.append(" ");
s.append(getDayNaYin());
s.append("]");
for(String f:getFestivals()){
s.append(" (");
s.append(f);