1
0
mirror of synced 2026-03-24 13:28:44 +08:00

增加星宿吉凶;增加星宿歌诀;增加支持时辰。

This commit is contained in:
6tail
2020-04-06 18:04:02 +08:00
parent d402749d41
commit 88c37d7497
8 changed files with 530 additions and 21 deletions

View File

@@ -66,8 +66,8 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
输出结果:
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[](东南) 阳贵神方位[](东南) 阴贵神方位[](正东) 福神方位[](正西) 财神方位[](正南) 冲[(丁卯)兔] 煞[东]
1986-05-29 星期四 双子座
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子时 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[](东南) 阳贵神方位[](东南) 阴贵神方位[](正东) 福神方位[](正西) 财神方位[](正南) 冲[(丁卯)兔] 煞[东]
1986-05-29 00:00 星期四 双子座
## 文档

View File

@@ -66,8 +66,8 @@ If you will use jars in your projects, I suggest you to download latest snapshot
Output:
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[](东南) 阳贵神方位[](东南) 阴贵神方位[](正东) 福神方位[](正西) 财神方位[](正南) 冲[(丁卯)兔] 煞[东]
1986-05-29 星期四 双子座
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子时 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[](东南) 阳贵神方位[](东南) 阴贵神方位[](正东) 福神方位[](正西) 财神方位[](正南) 冲[(丁卯)兔] 煞[东]
1986-05-29 00:00 星期四 双子座
## Documentation

View File

@@ -28,6 +28,10 @@ public class Lunar{
private int dayGanIndex;
/** 日对应的地支下标0-12 */
private int dayZhiIndex;
/** 阳历小时 */
private int hour;
/** 阳历分钟 */
private int minute;
/**
* 默认使用当前日期初始化
@@ -39,14 +43,29 @@ public class Lunar{
/**
* 通过农历年月日初始化
*
* @param year 年(农历)
* @param month 月农历1到12闰月为负即闰2月=-2
* @param day 日农历1到31
* @param lunarYear 年(农历)
* @param lunarMonth 月农历1到12闰月为负即闰2月=-2
* @param lunarDay 日农历1到31
*/
public Lunar(int year,int month,int day){
this.year = year;
this.month = month;
this.day = day;
public Lunar(int lunarYear,int lunarMonth,int lunarDay){
this(lunarYear,lunarMonth,lunarDay,0,0);
}
/**
* 通过农历年月日时初始化
*
* @param lunarYear 年(农历)
* @param lunarMonth 月农历1到12闰月为负即闰2月=-2
* @param lunarDay 日农历1到31
* @param hour 小时(阳历)
* @param minute 分钟(阳历)
*/
public Lunar(int lunarYear,int lunarMonth,int lunarDay,int hour,int minute){
this.year = lunarYear;
this.month = lunarMonth;
this.day = lunarDay;
this.hour = hour;
this.minute = minute;
this.dayOffset = LunarUtil.computeAddDays(year,month,day);
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
dayGanIndex = addDays%10;
@@ -104,6 +123,8 @@ public class Lunar{
year = lunarYear;
month = lunarMonth;
day = lunarDay;
hour = solar.getHour();
minute = solar.getMinute();
dayOffset = LunarUtil.computeAddDays(year,month,day);
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
dayGanIndex = addDays%10;
@@ -123,13 +144,27 @@ public class Lunar{
/**
* 通过指定农历年月日获取农历
*
* @param year 年(农历)
* @param month 月农历1到12闰月为负即闰2月=-2
* @param day 日农历1到31
* @param lunarYear 年(农历)
* @param lunarMonth 月农历1到12闰月为负即闰2月=-2
* @param lunarDay 日农历1到31
* @return 农历
*/
public static Lunar fromYmd(int year,int month,int day){
return new Lunar(year,month,day);
public static Lunar fromYmd(int lunarYear,int lunarMonth,int lunarDay){
return new Lunar(lunarYear,lunarMonth,lunarDay);
}
/**
* 通过指定农历年月日获取农历
*
* @param lunarYear 年(农历)
* @param lunarMonth 月农历1到12闰月为负即闰2月=-2
* @param lunarDay 日农历1到31
* @param hour 小时(阳历)
* @param minute 分钟(阳历)
* @return 农历
*/
public static Lunar fromYmdHm(int lunarYear,int lunarMonth,int lunarDay,int hour,int minute){
return new Lunar(lunarYear,lunarMonth,lunarDay,hour,minute);
}
/**
@@ -227,6 +262,21 @@ public class Lunar{
return "";
}
/**
* 获取时辰生肖
*
* @return 时辰生肖,如虎
*/
public String getTimeShengXiao(){
String zhi = getTimeZhi();
for(int i=0,j=LunarUtil.ZHI.length;i<j;i++){
if(LunarUtil.ZHI[i].equals(zhi)){
return LunarUtil.SHENGXIAO[i];
}
}
return "";
}
/**
* 获取中文的年
*
@@ -254,6 +304,43 @@ public class Lunar{
}
}
/**
* 获取时辰(地支)
* @return 时辰(地支)
*/
public String getTimeZhi(){
String time = (hour<10?"0":"")+hour+":"+(minute<10?"0":"")+minute;
return LunarUtil.convertTime(time);
}
/**
* 获取时辰(天干)
* @return 时辰(天干)
*/
public String getTimeGan(){
String zhi = getTimeZhi();
for(int i=1,j=LunarUtil.ZHI.length;i<j;i++){
if(LunarUtil.ZHI[i].equals(zhi)){
return LunarUtil.GAN[1+(i-1)%10];
}
}
return null;
}
/**
* 获取时辰干支
* @return 时辰干支
*/
public String getTimeInGanZhi(){
String zhi = getTimeZhi();
for(int i=1,j=LunarUtil.ZHI.length;i<j;i++){
if(LunarUtil.ZHI[i].equals(zhi)){
return LunarUtil.GAN[1+(i-1)%10]+zhi;
}
}
return zhi;
}
/**
* 获取季节
* @return 农历季节
@@ -357,6 +444,24 @@ public class Lunar{
return LunarUtil.XIU.get(getDayZhi()+getWeek());
}
/**
* 获取宿吉凶
*
* @return 吉/凶
*/
public String getXiuLuck(){
return LunarUtil.XIU_LUCK.get(getXiu());
}
/**
* 获取宿歌诀
*
* @return 宿歌诀
*/
public String getXiuSong(){
return LunarUtil.XIU_SONG.get(getXiu());
}
/**
* 获取政
*
@@ -427,6 +532,8 @@ public class Lunar{
Calendar c = Calendar.getInstance();
c.set(SolarUtil.BASE_YEAR,SolarUtil.BASE_MONTH-1,SolarUtil.BASE_DAY);
c.add(Calendar.DATE,dayOffset);
c.set(Calendar.HOUR_OF_DAY,hour);
c.set(Calendar.MINUTE,minute);
return new Solar(c);
}
@@ -677,7 +784,9 @@ public class Lunar{
s.append(getDayInGanZhi());
s.append("(");
s.append(getDayShengXiao());
s.append(")日 纳音[");
s.append(")日 ");
s.append(getTimeZhi());
s.append("时 纳音[");
s.append(getYearNaYin());
s.append(" ");
s.append(getMonthNaYin());

View File

@@ -19,6 +19,10 @@ public class Solar{
private int month;
/** 日 */
private int day;
/** 时 */
private int hour;
/** 分 */
private int minute;
/** 日历 */
private Calendar calendar;
@@ -42,6 +46,27 @@ public class Solar{
this.year = year;
this.month = month;
this.day = day;
this.hour = 0;
this.minute = 0;
}
/**
* 通过年月日初始化
*
* @param year 年
* @param month 月1到12
* @param day 日1到31
* @param hour 小时0到23
* @param minute 分钟0到59
*/
public Solar(int year,int month,int day,int hour,int minute){
calendar = Calendar.getInstance();
calendar.set(year,month-1,day,hour,minute);
this.year = year;
this.month = month;
this.day = day;
this.hour = hour;
this.minute = minute;
}
/**
@@ -55,6 +80,8 @@ public class Solar{
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH)+1;
day = calendar.get(Calendar.DATE);
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
}
/**
@@ -67,6 +94,8 @@ public class Solar{
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH)+1;
day = calendar.get(Calendar.DATE);
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
}
/**
@@ -101,6 +130,20 @@ public class Solar{
return new Solar(year,month,day);
}
/**
* 通过指定年月日时分获取阳历
*
* @param year 年
* @param month 月1到12
* @param day 日1到31
* @param hour 小时0到23
* @param minute 分钟0到59
* @return 阳历
*/
public static Solar fromYmdHm(int year,int month,int day,int hour,int minute){
return new Solar(year,month,day,hour,minute);
}
/**
* 是否闰年
*
@@ -266,6 +309,24 @@ public class Solar{
return day;
}
/**
* 获取小时
*
* @return 0到23之间的数字
*/
public int getHour(){
return hour;
}
/**
* 获取分钟
*
* @return 0到59之间的数字
*/
public int getMinute(){
return minute;
}
/**
* 获取农历
* @return 农历
@@ -291,6 +352,12 @@ public class Solar{
public String toFullString(){
StringBuilder s = new StringBuilder();
s.append(toString());
s.append(" ");
s.append(hour<10?"0":"");
s.append(hour);
s.append(":");
s.append(minute<10?"0":"");
s.append(minute);
if(isLeapYear()){
s.append(" ");
s.append("闰年");

View File

@@ -270,6 +270,74 @@ public class LunarUtil{
put("未0","");
}
};
/** 星宿对应吉凶 */
public static final Map<String,String> XIU_LUCK = 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("","");
}
};
/** 星宿对应吉凶 */
public static final Map<String,String> XIU_SONG = 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("","轸星临水造龙宫,代代为官受皇封,富贵荣华增寿禄,库满仓盈自昌隆,埋葬文昌来照助,宅舍安宁不见凶,更有为官沾帝宠,婚姻龙子入龙宫。");
}
};
/** 兽 */
public static final Map<String,String> SHOU = new HashMap<String,String>(){
private static final long serialVersionUID = -1;
@@ -642,4 +710,26 @@ public class LunarUtil{
}
return d;
}
/**
* 将HH:mm时刻转换为时辰地支非法的时刻返回子null返回null
* @param hm HH:mm时刻
* @return 时辰(地支),如子
*/
public static String convertTime(String hm){
if(null==hm){
return null;
}
if(hm.length()>5){
hm = hm.substring(0,5);
}
int x = 2;
for(int i=1;i<22;i+=2){
if(hm.compareTo((i<10?"0":"")+i+":00")>=0&&hm.compareTo((i+1<10?"0":"")+(i+1)+":59")<=0){
return ZHI[x];
}
x++;
}
return ZHI[1];
}
}

View File

@@ -15,9 +15,9 @@ 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());
Assert.assertEquals("2019-05-01 00:00 星期三 (劳动节) 金牛座",date.getSolar().toFullString());
}
}

View File

@@ -15,9 +15,9 @@ public class SolarTest {
public void test(){
Solar date = new Solar(2019,5,1);
Assert.assertEquals("2019-05-01",date.toString());
Assert.assertEquals("2019-05-01 星期三 (劳动节) 金牛座",date.toFullString());
Assert.assertEquals("2019-05-01 00:00 星期三 (劳动节) 金牛座",date.toFullString());
Assert.assertEquals("贰零壹玖年叁月廿七",date.getLunar().toString());
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年 戊辰(龙)月 戊戌(狗)日 纳音[平地木 大林木 平地木] 星期三 (七殿泰山王诞) 西方白虎 参水猿 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 煞[北]",date.getLunar().toFullString());
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年 戊辰(龙)月 戊戌(狗)日 酉时 纳音[平地木 大林木 平地木] 星期三 (七殿泰山王诞) 西方白虎 参水猿 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 煞[北]",date.getLunar().toFullString());
}
}

View File

@@ -0,0 +1,243 @@
package test;
import com.nlf.calendar.Lunar;
import com.nlf.calendar.util.LunarUtil;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
/**
* 时辰测试
*
* @author 6tail
*/
public class TimeTest {
private static final Map<String,String> ZHI = new HashMap<String, String>(){
private static final long serialVersionUID = -1L;
{
put("23:00","");
put("00:59","");
put("23:30","");
put("01:00","");
put("02:59","");
put("01:30","");
put("03:00","");
put("04:59","");
put("03:30","");
put("05:00","");
put("06:59","");
put("05:30","");
put("07:00","");
put("08:59","");
put("07:30","");
put("09:00","");
put("10:59","");
put("09:30","");
put("11:00","");
put("12:59","");
put("11:30","");
put("13:00","");
put("14:59","");
put("13:30","");
put("15:00","");
put("16:59","");
put("15:30","");
put("17:00","");
put("18:59","");
put("17:30","");
put("19:00","");
put("20:59","");
put("19:30","");
put("21:00","");
put("22:59","");
put("21:30","");
put(null,null);
put("","");
put("23:01:01","");
put("其他","");
put("21:01:01","");
}
};
private static final Map<String,String> GAN = new HashMap<String, String>(){
private static final long serialVersionUID = -1L;
{
put("23:00","");
put("00:59","");
put("23:30","");
put("01:00","");
put("02:59","");
put("01:30","");
put("03:00","");
put("04:59","");
put("03:30","");
put("05:00","");
put("06:59","");
put("05:30","");
put("07:00","");
put("08:59","");
put("07:30","");
put("09:00","");
put("10:59","");
put("09:30","");
put("11:00","");
put("12:59","");
put("11:30","");
put("13:00","");
put("14:59","");
put("13:30","");
put("15:00","");
put("16:59","");
put("15:30","");
put("17:00","");
put("18:59","");
put("17:30","");
put("19:00","");
put("20:59","");
put("19:30","");
put("21:00","");
put("22:59","");
put("21:30","");
put(null,"");
put("","");
put("23:01:01","");
put("其他","");
put("80:90","");
put("21:01:01","");
}
};
private static final Map<String,String> GAN_ZHI = new HashMap<String, String>(){
private static final long serialVersionUID = -1L;
{
put("23:00","甲子");
put("00:59","甲子");
put("23:30","甲子");
put("01:00","乙丑");
put("02:59","乙丑");
put("01:30","乙丑");
put("03:00","丙寅");
put("04:59","丙寅");
put("03:30","丙寅");
put("05:00","丁卯");
put("06:59","丁卯");
put("05:30","丁卯");
put("07:00","戊辰");
put("08:59","戊辰");
put("07:30","戊辰");
put("09:00","己巳");
put("10:59","己巳");
put("09:30","己巳");
put("11:00","庚午");
put("12:59","庚午");
put("11:30","庚午");
put("13:00","辛未");
put("14:59","辛未");
put("13:30","辛未");
put("15:00","壬申");
put("16:59","壬申");
put("15:30","壬申");
put("17:00","癸酉");
put("18:59","癸酉");
put("17:30","癸酉");
put("19:00","甲戌");
put("20:59","甲戌");
put("19:30","甲戌");
put("21:00","乙亥");
put("22:59","乙亥");
put("21:30","乙亥");
put(null,"甲子");
put("","甲子");
put("23:01:01","甲子");
put("其他","甲子");
put("80:90","甲子");
put("20:21:01","甲戌");
put("21:01:01","乙亥");
put("01:21:01","乙丑");
}
};
@Test
public void testLunarTimeGanZhi(){
for(Map.Entry<String,String> entry:GAN_ZHI.entrySet()){
int hour = 0,minute = 0;
String hm = entry.getKey();
if(null!=hm&&hm.length()>=5){
hour = Integer.parseInt(hm.substring(0,2),10);
minute = Integer.parseInt(hm.substring(3,5),10);
}
Lunar lunar = Lunar.fromYmdHm(2020,1,1,hour,minute);
String ganZhi = entry.getValue();
Assert.assertEquals(hm, ganZhi, lunar.getTimeInGanZhi());
}
}
@Test
public void testLunarTimeGan(){
for(Map.Entry<String,String> entry:GAN.entrySet()){
int hour = 0,minute = 0;
String hm = entry.getKey();
if(null!=hm&&hm.length()>=5){
hour = Integer.parseInt(hm.substring(0,2),10);
minute = Integer.parseInt(hm.substring(3,5),10);
}
Lunar lunar = Lunar.fromYmdHm(2020,1,1,hour,minute);
String gan = entry.getValue();
Assert.assertEquals(hm, gan, lunar.getTimeGan());
}
}
@Test
public void test(){
for(Map.Entry<String,String> entry:ZHI.entrySet()){
String hm = entry.getKey();
String zhi = entry.getValue();
Assert.assertEquals(hm, zhi, LunarUtil.convertTime(hm));
}
}
}