增加星宿吉凶;增加星宿歌诀;增加支持时辰。
This commit is contained in:
@@ -66,8 +66,8 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
|
||||
输出结果:
|
||||
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东]
|
||||
1986-05-29 星期四 双子座
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子时 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东]
|
||||
1986-05-29 00:00 星期四 双子座
|
||||
|
||||
## 文档
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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("闰年");
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
243
src/test/java/test/TimeTest.java
Normal file
243
src/test/java/test/TimeTest.java
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user