1
0
mirror of synced 2026-02-04 12:07:59 +08:00

增加获取节气名、上一气令、下一气令、当天节气、当天节令、当天气令的方法

This commit is contained in:
6tail
2020-10-12 22:36:19 +08:00
parent 78cad19748
commit c7738352eb
2 changed files with 125 additions and 1 deletions

View File

@@ -1949,6 +1949,22 @@ public class Lunar{
return getNearJieQi(false,LunarUtil.JIE);
}
/**
* 获取下一气令(顺推的第一个气令)
* @return 节气
*/
public JieQi getNextQi(){
return getNearJieQi(true,LunarUtil.QI);
}
/**
* 获取上一气令(逆推的第一个气令)
* @return 节气
*/
public JieQi getPrevQi(){
return getNearJieQi(false,LunarUtil.QI);
}
/**
* 获取下一节气(顺推的第一个节气)
* @return 节气
@@ -2019,6 +2035,54 @@ public class Lunar{
return new JieQi(name, near);
}
/**
* 获取节气名称,如果无节气,返回空字符串
* @return 节气名称
*/
public String getJieQi(){
String name = "";
for(Map.Entry<String,Solar> jq:jieQi.entrySet()){
Solar d = jq.getValue();
if(d.getYear()==solar.getYear()&&d.getMonth()==solar.getMonth()&&d.getDay()==solar.getDay()){
name = jq.getKey();
break;
}
}
if(JIE_QI_APPEND.equals(name)){
name = JIE_QI_FIRST;
}else if(JIE_QI_PREPEND.equals(name)){
name = JIE_QI_LAST;
}
return name;
}
/**
* 获取当天节气对象如果无节气返回null
* @return 节气对象
*/
public JieQi getCurrentJieQi(){
String name = getJieQi();
return name.length()>0 ? new JieQi(name,solar) : null;
}
/**
* 获取当天节令对象如果无节令返回null
* @return 节气对象
*/
public JieQi getCurrentJie(){
String name = getJie();
return name.length()>0 ? new JieQi(name,solar) : null;
}
/**
* 获取当天气令对象如果无气令返回null
* @return 节气对象
*/
public JieQi getCurrentQi(){
String name = getQi();
return name.length()>0 ? new JieQi(name,solar) : null;
}
public String toFullString(){
StringBuilder s = new StringBuilder();
s.append(toString());
@@ -2058,7 +2122,7 @@ public class Lunar{
s.append(f);
s.append(")");
}
String jq = getJie()+getQi();
String jq = getJieQi();
if(jq.length()>0){
s.append(" [");
s.append(jq);

View File

@@ -1,5 +1,6 @@
package test;
import com.nlf.calendar.Lunar;
import com.nlf.calendar.Solar;
import org.junit.Assert;
import org.junit.Test;
@@ -95,4 +96,63 @@ public class JieQiTest {
Assert.assertEquals(name, entry.getValue(), result.get(name).toYmdHms());
}
}
@Test
public void test() {
Solar solar = Solar.fromYmd(1986,1,5);
Lunar lunar = solar.getLunar();
Assert.assertEquals("小寒", lunar.getJie());
Assert.assertEquals("小寒", lunar.getJieQi());
Assert.assertEquals("小寒", lunar.getCurrentJieQi().getName());
Assert.assertEquals("小寒", lunar.getCurrentJie().getName());
Assert.assertNull(lunar.getCurrentQi());
Assert.assertEquals("", lunar.getQi());
Assert.assertEquals("大雪", lunar.getPrevJie().getName());
Assert.assertEquals("冬至", lunar.getPrevQi().getName());
Assert.assertEquals("冬至", lunar.getPrevJieQi().getName());
solar = Solar.fromYmdHms(1986,1,20,17,0,0);
lunar = solar.getLunar();
Assert.assertEquals("大寒", lunar.getQi());
Assert.assertEquals("大寒", lunar.getJieQi());
Assert.assertEquals("大寒", lunar.getCurrentJieQi().getName());
Assert.assertEquals("大寒", lunar.getCurrentQi().getName());
Assert.assertNull(lunar.getCurrentJie());
Assert.assertEquals("", lunar.getJie());
Assert.assertEquals("立春", lunar.getNextJie().getName());
Assert.assertEquals("雨水", lunar.getNextQi().getName());
Assert.assertEquals("立春", lunar.getNextJieQi().getName());
solar = Solar.fromYmdHms(1986,1,20,14,0,0);
lunar = solar.getLunar();
Assert.assertEquals("小寒", lunar.getPrevJie().getName());
Assert.assertEquals("冬至", lunar.getPrevQi().getName());
Assert.assertEquals("小寒", lunar.getPrevJieQi().getName());
solar = Solar.fromYmd(1986,12,7);
lunar = solar.getLunar();
Assert.assertEquals("大雪", lunar.getJie());
Assert.assertEquals("大雪", lunar.getJieQi());
Assert.assertEquals("大雪", lunar.getCurrentJieQi().getName());
Assert.assertEquals("大雪", lunar.getCurrentJie().getName());
Assert.assertNull(lunar.getCurrentQi());
Assert.assertEquals("", lunar.getQi());
Assert.assertEquals("大雪", lunar.getNextJie().getName());
Assert.assertEquals("冬至", lunar.getNextQi().getName());
Assert.assertEquals("大雪", lunar.getNextJieQi().getName());
solar = Solar.fromYmd(1986,1,1);
lunar = solar.getLunar();
Assert.assertEquals("", lunar.getJie());
Assert.assertEquals("", lunar.getQi());
Assert.assertEquals("", lunar.getJieQi());
Assert.assertNull(lunar.getCurrentJieQi());
Assert.assertNull(lunar.getCurrentJie());
Assert.assertNull(lunar.getCurrentQi());
Assert.assertEquals("大雪", lunar.getPrevJie().getName());
Assert.assertEquals("冬至", lunar.getPrevQi().getName());
Assert.assertEquals("冬至", lunar.getPrevJieQi().getName());
Assert.assertEquals("小寒", lunar.getNextJie().getName());
Assert.assertEquals("大寒", lunar.getNextQi().getName());
Assert.assertEquals("小寒", lunar.getNextJieQi().getName());
}
}