增加纳音;优化代码。
This commit is contained in:
15
README.md
15
README.md
@@ -55,14 +55,10 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
public class LunarSample{
|
||||
public static void main(String[] args){
|
||||
//今天
|
||||
Lunar date = new Lunar();
|
||||
//输出阴历信息
|
||||
System.out.println(date.toFullString());
|
||||
//输出阳历信息
|
||||
System.out.println(date.getSolar().toFullString());
|
||||
System.out.println();
|
||||
//Lunar date = new Lunar();
|
||||
|
||||
//指定阴历的某一天
|
||||
date = new Lunar(1986,4,21);
|
||||
Lunar date = new Lunar(1986,4,21);
|
||||
System.out.println(date.toFullString());
|
||||
System.out.println(date.getSolar().toFullString());
|
||||
}
|
||||
@@ -70,10 +66,7 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
|
||||
输出结果:
|
||||
|
||||
贰零壹陆年捌月初八 丙申(猴)年丁酉月癸巳日 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 巳不远行财物伏藏] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁亥)猪] 刹[东]
|
||||
2016-09-08 闰年 星期四 (世界扫盲日) 处女座
|
||||
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年癸巳月癸酉日 北方玄武 危月燕 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 刹[东]
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 北方玄武 危月燕 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 刹[东]
|
||||
1986-05-29 星期四 双子座
|
||||
|
||||
## 文档
|
||||
|
||||
15
README_EN.md
15
README_EN.md
@@ -55,14 +55,10 @@ If you will use jars in your projects, I suggest you to download latest snapshot
|
||||
public class LunarSample{
|
||||
public static void main(String[] args){
|
||||
//今天
|
||||
Lunar date = new Lunar();
|
||||
//输出阴历信息
|
||||
System.out.println(date.toFullString());
|
||||
//输出阳历信息
|
||||
System.out.println(date.getSolar().toFullString());
|
||||
System.out.println();
|
||||
//Lunar date = new Lunar();
|
||||
|
||||
//指定阴历的某一天
|
||||
date = new Lunar(1986,4,21);
|
||||
Lunar date = new Lunar(1986,4,21);
|
||||
System.out.println(date.toFullString());
|
||||
System.out.println(date.getSolar().toFullString());
|
||||
}
|
||||
@@ -70,10 +66,7 @@ If you will use jars in your projects, I suggest you to download latest snapshot
|
||||
|
||||
Output:
|
||||
|
||||
贰零壹陆年捌月初八 丙申(猴)年丁酉月癸巳日 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 巳不远行财物伏藏] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁亥)猪] 刹[东]
|
||||
2016-09-08 闰年 星期四 (世界扫盲日) 处女座
|
||||
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年癸巳月癸酉日 北方玄武 危月燕 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 刹[东]
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 北方玄武 危月燕 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 刹[东]
|
||||
1986-05-29 星期四 双子座
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -416,6 +416,73 @@ public class LunarUtil{
|
||||
}
|
||||
};
|
||||
|
||||
/** 纳音 */
|
||||
public static final Map<String,String> NAYIN = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("甲子","海中金");
|
||||
put("甲午","沙中金");
|
||||
put("丙寅","炉中火");
|
||||
put("丙申","山下火");
|
||||
put("戊辰","大林木");
|
||||
put("戊戌","平地木");
|
||||
put("庚午","路旁土");
|
||||
put("庚子","壁上土");
|
||||
put("壬申","剑锋金");
|
||||
put("壬寅","金箔金");
|
||||
put("甲戌","山头火");
|
||||
put("甲辰","覆灯火");
|
||||
put("丙子","涧下水");
|
||||
put("丙午","天河水");
|
||||
put("戊寅","城头土");
|
||||
put("戊申","大驿土");
|
||||
put("庚辰","白蜡金");
|
||||
put("庚戌","钗钏金");
|
||||
put("壬午","杨柳木");
|
||||
put("壬子","桑柘木");
|
||||
put("甲申","泉中水");
|
||||
put("甲寅","大溪水");
|
||||
put("丙戌","屋上土");
|
||||
put("丙辰","沙中土");
|
||||
put("戊子","霹雳火");
|
||||
put("戊午","天上火");
|
||||
put("庚寅","松柏木");
|
||||
put("庚申","石榴木");
|
||||
put("壬辰","长流水");
|
||||
put("壬戌","大海水");
|
||||
put("乙丑","海中金");
|
||||
put("乙未","沙中金");
|
||||
put("丁卯","炉中火");
|
||||
put("丁酉","山下火");
|
||||
put("己巳","大林木");
|
||||
put("己亥","平地木");
|
||||
put("辛未","路旁土");
|
||||
put("辛丑","壁上土");
|
||||
put("癸酉","剑锋金");
|
||||
put("癸卯","金箔金");
|
||||
put("乙亥","山头火");
|
||||
put("乙巳","覆灯火");
|
||||
put("丁丑","涧下水");
|
||||
put("丁未","天河水");
|
||||
put("己卯","城头土");
|
||||
put("己酉","大驿土");
|
||||
put("辛巳","白蜡金");
|
||||
put("辛亥","钗钏金");
|
||||
put("癸未","杨柳木");
|
||||
put("癸丑","桑柘木");
|
||||
put("乙酉","泉中水");
|
||||
put("乙卯","大溪水");
|
||||
put("丁亥","屋上土");
|
||||
put("丁巳","沙中土");
|
||||
put("己丑","霹雳火");
|
||||
put("己未","天上火");
|
||||
put("辛卯","松柏木");
|
||||
put("辛酉","石榴木");
|
||||
put("癸巳","长流水");
|
||||
put("癸亥","大海水");
|
||||
}
|
||||
};
|
||||
|
||||
protected LunarUtil(){}
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,7 +15,7 @@ public class LunarTest {
|
||||
public void test(){
|
||||
Lunar date = new Lunar(2019,3,27);
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七",date.toString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年戊辰月戊戌日 (七殿泰山王诞) 西方白虎 娄金狗 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 刹[北]",date.toFullString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年 戊辰(龙)月 戊戌(狗)日 纳音[平地木 大林木 平地木] (七殿泰山王诞) 西方白虎 娄金狗 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 刹[北]",date.toFullString());
|
||||
Assert.assertEquals("2019-05-01",date.getSolar().toString());
|
||||
Assert.assertEquals("2019-05-01 星期三 (劳动节) 金牛座",date.getSolar().toFullString());
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public class SolarTest {
|
||||
Assert.assertEquals("2019-05-01",date.toString());
|
||||
Assert.assertEquals("2019-05-01 星期三 (劳动节) 金牛座",date.toFullString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七",date.getLunar().toString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年戊辰月戊戌日 (七殿泰山王诞) 西方白虎 娄金狗 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 刹[北]",date.getLunar().toFullString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年 戊辰(龙)月 戊戌(狗)日 纳音[平地木 大林木 平地木] (七殿泰山王诞) 西方白虎 娄金狗 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 刹[北]",date.getLunar().toFullString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user