Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60634d7cd8 | ||
|
|
fba9a85135 | ||
|
|
913e7b40fb | ||
|
|
c7738352eb |
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)和农历(阴历、老黄历)
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<version>1.1.3</version>
|
<version>1.1.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<version>1.1.3</version>
|
<version>1.1.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
|||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.1.3</version>
|
<version>1.1.4</version>
|
||||||
<name>${project.groupId}:${project.artifactId}</name>
|
<name>${project.groupId}:${project.artifactId}</name>
|
||||||
<url>https://github.com/6tail/lunar-java</url>
|
<url>https://github.com/6tail/lunar-java</url>
|
||||||
<description>a calendar library for Solar and Chinese Lunar</description>
|
<description>a calendar library for Solar and Chinese Lunar</description>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.nlf.calendar;
|
package com.nlf.calendar;
|
||||||
|
|
||||||
|
import com.nlf.calendar.util.LunarUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 节气
|
* 节气
|
||||||
*
|
*
|
||||||
@@ -13,11 +15,22 @@ public class JieQi {
|
|||||||
/** 阳历日期 */
|
/** 阳历日期 */
|
||||||
private Solar solar;
|
private Solar solar;
|
||||||
|
|
||||||
|
/** 是否节令 */
|
||||||
|
private boolean jie;
|
||||||
|
|
||||||
|
/** 是否气令 */
|
||||||
|
private boolean qi;
|
||||||
|
|
||||||
public JieQi() {
|
public JieQi() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
* @param name 名称
|
||||||
|
* @param solar 阳历日期
|
||||||
|
*/
|
||||||
public JieQi(String name, Solar solar) {
|
public JieQi(String name, Solar solar) {
|
||||||
this.name = name;
|
setName(name);
|
||||||
this.solar = solar;
|
this.solar = solar;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,6 +48,18 @@ public class JieQi {
|
|||||||
*/
|
*/
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
for(String key: LunarUtil.JIE){
|
||||||
|
if(key.equals(name)){
|
||||||
|
this.jie = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(String key: LunarUtil.QI){
|
||||||
|
if(key.equals(name)){
|
||||||
|
this.qi = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,4 +78,24 @@ public class JieQi {
|
|||||||
this.solar = solar;
|
this.solar = solar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否节令
|
||||||
|
* @return true/false
|
||||||
|
*/
|
||||||
|
public boolean isJie(){
|
||||||
|
return jie;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否气令
|
||||||
|
* @return true/false
|
||||||
|
*/
|
||||||
|
public boolean isQi() {
|
||||||
|
return qi;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1949,6 +1949,22 @@ public class Lunar{
|
|||||||
return getNearJieQi(false,LunarUtil.JIE);
|
return getNearJieQi(false,LunarUtil.JIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取下一气令(顺推的第一个气令)
|
||||||
|
* @return 节气
|
||||||
|
*/
|
||||||
|
public JieQi getNextQi(){
|
||||||
|
return getNearJieQi(true,LunarUtil.QI);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取上一气令(逆推的第一个气令)
|
||||||
|
* @return 节气
|
||||||
|
*/
|
||||||
|
public JieQi getPrevQi(){
|
||||||
|
return getNearJieQi(false,LunarUtil.QI);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取下一节气(顺推的第一个节气)
|
* 获取下一节气(顺推的第一个节气)
|
||||||
* @return 节气
|
* @return 节气
|
||||||
@@ -2019,6 +2035,54 @@ public class Lunar{
|
|||||||
return new JieQi(name, near);
|
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(){
|
public String toFullString(){
|
||||||
StringBuilder s = new StringBuilder();
|
StringBuilder s = new StringBuilder();
|
||||||
s.append(toString());
|
s.append(toString());
|
||||||
@@ -2058,7 +2122,7 @@ public class Lunar{
|
|||||||
s.append(f);
|
s.append(f);
|
||||||
s.append(")");
|
s.append(")");
|
||||||
}
|
}
|
||||||
String jq = getJie()+getQi();
|
String jq = getJieQi();
|
||||||
if(jq.length()>0){
|
if(jq.length()>0){
|
||||||
s.append(" [");
|
s.append(" [");
|
||||||
s.append(jq);
|
s.append(jq);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package test;
|
package test;
|
||||||
|
|
||||||
|
import com.nlf.calendar.Lunar;
|
||||||
import com.nlf.calendar.Solar;
|
import com.nlf.calendar.Solar;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -95,4 +96,63 @@ public class JieQiTest {
|
|||||||
Assert.assertEquals(name, entry.getValue(), result.get(name).toYmdHms());
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user