Merge remote-tracking branch 'remotes/origin/v1.1.0-SNAPSHOT'
This commit is contained in:
@@ -60,6 +60,10 @@ public class Lunar{
|
|||||||
private int dayGanIndex;
|
private int dayGanIndex;
|
||||||
/** 日对应的地支下标,0-11 */
|
/** 日对应的地支下标,0-11 */
|
||||||
private int dayZhiIndex;
|
private int dayZhiIndex;
|
||||||
|
/** 日对应的天干下标(最精确的,供八字用,晚子时算第二天),0-9 */
|
||||||
|
private int dayGanIndexExact;
|
||||||
|
/** 日对应的地支下标(最精确的,供八字用,晚子时算第二天),0-11 */
|
||||||
|
private int dayZhiIndexExact;
|
||||||
/** 月对应的天干下标(以节交接当天起算),0-9 */
|
/** 月对应的天干下标(以节交接当天起算),0-9 */
|
||||||
private int monthGanIndex;
|
private int monthGanIndex;
|
||||||
/** 月对应的地支下标(以节交接当天起算),0-11 */
|
/** 月对应的地支下标(以节交接当天起算),0-11 */
|
||||||
@@ -326,6 +330,25 @@ public class Lunar{
|
|||||||
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
|
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
|
||||||
dayGanIndex = addDays%10;
|
dayGanIndex = addDays%10;
|
||||||
dayZhiIndex = addDays%12;
|
dayZhiIndex = addDays%12;
|
||||||
|
|
||||||
|
int dayGanExact = dayGanIndex;
|
||||||
|
int dayZhiExact = dayZhiIndex;
|
||||||
|
|
||||||
|
// 晚子时(夜子/子夜)应算作第二天
|
||||||
|
String hm = (hour<10?"0":"")+hour+":"+(minute<10?"0":"")+minute;
|
||||||
|
if(hm.compareTo("23:00")>=0&&hm.compareTo("23:59")<=0){
|
||||||
|
dayGanExact++;
|
||||||
|
if(dayGanExact>=10){
|
||||||
|
dayGanExact -= 10;
|
||||||
|
}
|
||||||
|
dayZhiExact++;
|
||||||
|
if(dayZhiExact>=12){
|
||||||
|
dayZhiExact -= 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dayGanIndexExact = dayGanExact;
|
||||||
|
dayZhiIndexExact = dayZhiExact;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -334,15 +357,7 @@ public class Lunar{
|
|||||||
private void computeTime(){
|
private void computeTime(){
|
||||||
String hm = (hour<10?"0":"")+hour+":"+(minute<10?"0":"")+minute;
|
String hm = (hour<10?"0":"")+hour+":"+(minute<10?"0":"")+minute;
|
||||||
timeZhiIndex = LunarUtil.getTimeZhiIndex(hm);
|
timeZhiIndex = LunarUtil.getTimeZhiIndex(hm);
|
||||||
int dayGan = dayGanIndex;
|
timeGanIndex = (dayGanIndexExact%5*2+timeZhiIndex)%10;
|
||||||
// 晚子时(夜子/子夜)应算作第二天
|
|
||||||
if(hm.compareTo("23:00")>=0&&hm.compareTo("23:59")<=0){
|
|
||||||
dayGan++;
|
|
||||||
if(dayGan>=10){
|
|
||||||
dayGan -= 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
timeGanIndex = (dayGan%5*2+timeZhiIndex)%10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -559,6 +574,15 @@ public class Lunar{
|
|||||||
return getDayGan()+getDayZhi();
|
return getDayGan()+getDayZhi();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取干支纪日(日柱,晚子时算第二天)
|
||||||
|
*
|
||||||
|
* @return 干支纪日(日柱),如己卯
|
||||||
|
*/
|
||||||
|
public String getDayInGanZhiExact(){
|
||||||
|
return getDayGanExact()+getDayZhiExact();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取日天干
|
* 获取日天干
|
||||||
*
|
*
|
||||||
@@ -568,6 +592,15 @@ public class Lunar{
|
|||||||
return LunarUtil.GAN[dayGanIndex+1];
|
return LunarUtil.GAN[dayGanIndex+1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取日天干(晚子时算第二天)
|
||||||
|
*
|
||||||
|
* @return 日天干,如甲
|
||||||
|
*/
|
||||||
|
public String getDayGanExact(){
|
||||||
|
return LunarUtil.GAN[dayGanIndexExact+1];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取日地支
|
* 获取日地支
|
||||||
*
|
*
|
||||||
@@ -577,6 +610,15 @@ public class Lunar{
|
|||||||
return LunarUtil.ZHI[dayZhiIndex+1];
|
return LunarUtil.ZHI[dayZhiIndex+1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取日地支(晚子时算第二天)
|
||||||
|
*
|
||||||
|
* @return 日地支,如卯
|
||||||
|
*/
|
||||||
|
public String getDayZhiExact(){
|
||||||
|
return LunarUtil.ZHI[dayZhiIndexExact+1];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取年生肖
|
* 获取年生肖
|
||||||
*
|
*
|
||||||
@@ -1170,11 +1212,10 @@ public class Lunar{
|
|||||||
*/
|
*/
|
||||||
public List<String> getBaZi(){
|
public List<String> getBaZi(){
|
||||||
List<String> l = new ArrayList<String>(4);
|
List<String> l = new ArrayList<String>(4);
|
||||||
String timeGan = LunarUtil.GAN[(dayGanIndex%5*12+timeZhiIndex)%10+1];
|
|
||||||
l.add(getYearInGanZhiExact());
|
l.add(getYearInGanZhiExact());
|
||||||
l.add(getMonthInGanZhiExact());
|
l.add(getMonthInGanZhiExact());
|
||||||
l.add(getDayInGanZhi());
|
l.add(getDayInGanZhiExact());
|
||||||
l.add(timeGan+getTimeZhi());
|
l.add(getTimeInGanZhi());
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,4 +58,12 @@ public class BaZiTest {
|
|||||||
System.out.println(lunar.getBaZi());
|
System.out.println(lunar.getBaZi());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test7(){
|
||||||
|
Solar solar = new Solar(2020,5,26,23,43,0);
|
||||||
|
Lunar lunar = solar.getLunar();
|
||||||
|
//[庚子, 辛巳, 庚午, 丙子]
|
||||||
|
System.out.println(lunar.getBaZi());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user