1
0
mirror of synced 2025-12-15 09:57:58 +08:00

Merge remote-tracking branch 'remotes/origin/v1.1.0-SNAPSHOT'

This commit is contained in:
6tail
2020-05-27 00:08:39 +08:00
2 changed files with 61 additions and 12 deletions

View File

@@ -60,6 +60,10 @@ public class Lunar{
private int dayGanIndex;
/** 日对应的地支下标0-11 */
private int dayZhiIndex;
/** 日对应的天干下标最精确的供八字用晚子时算第二天0-9 */
private int dayGanIndexExact;
/** 日对应的地支下标最精确的供八字用晚子时算第二天0-11 */
private int dayZhiIndexExact;
/** 月对应的天干下标以节交接当天起算0-9 */
private int monthGanIndex;
/** 月对应的地支下标以节交接当天起算0-11 */
@@ -326,6 +330,25 @@ public class Lunar{
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
dayGanIndex = addDays%10;
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(){
String hm = (hour<10?"0":"")+hour+":"+(minute<10?"0":"")+minute;
timeZhiIndex = LunarUtil.getTimeZhiIndex(hm);
int dayGan = dayGanIndex;
// 晚子时(夜子/子夜)应算作第二天
if(hm.compareTo("23:00")>=0&&hm.compareTo("23:59")<=0){
dayGan++;
if(dayGan>=10){
dayGan -= 10;
}
}
timeGanIndex = (dayGan%5*2+timeZhiIndex)%10;
timeGanIndex = (dayGanIndexExact%5*2+timeZhiIndex)%10;
}
/**
@@ -559,6 +574,15 @@ public class Lunar{
return getDayGan()+getDayZhi();
}
/**
* 获取干支纪日(日柱,晚子时算第二天)
*
* @return 干支纪日(日柱),如己卯
*/
public String getDayInGanZhiExact(){
return getDayGanExact()+getDayZhiExact();
}
/**
* 获取日天干
*
@@ -568,6 +592,15 @@ public class Lunar{
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 日地支,如卯
*/
public String getDayZhiExact(){
return LunarUtil.ZHI[dayZhiIndexExact+1];
}
/**
* 获取年生肖
*
@@ -1170,11 +1212,10 @@ public class Lunar{
*/
public List<String> getBaZi(){
List<String> l = new ArrayList<String>(4);
String timeGan = LunarUtil.GAN[(dayGanIndex%5*12+timeZhiIndex)%10+1];
l.add(getYearInGanZhiExact());
l.add(getMonthInGanZhiExact());
l.add(getDayInGanZhi());
l.add(timeGan+getTimeZhi());
l.add(getDayInGanZhiExact());
l.add(getTimeInGanZhi());
return l;
}

View File

@@ -58,4 +58,12 @@ public class BaZiTest {
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());
}
}