From d65f6852e9c6ccef6d99d325fb3c093fc57cfbe7 Mon Sep 17 00:00:00 2001
From: 6tail <6tail@6tail.cn>
Date: Tue, 1 Jun 2021 21:38:30 +0800
Subject: [PATCH] =?UTF-8?q?v1.2.3=20=E4=BF=AE=E5=A4=8D=E9=99=A4=E5=A4=95?=
=?UTF-8?q?=E9=94=99=E8=AF=AF=EF=BC=9B=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
README_EN.md | 2 +-
pom.xml | 2 +-
src/main/java/com/nlf/calendar/Lunar.java | 42 +++++++++----------
.../java/com/nlf/calendar/util/LunarUtil.java | 4 +-
src/test/java/test/LunarTest.java | 25 +++++++++++
6 files changed, 51 insertions(+), 26 deletions(-)
diff --git a/README.md b/README.md
index 6fe0ec2..0b2cec8 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)和农历(阴历、老黄历)
cn.6tail
lunar
- 1.2.2
+ 1.2.3
```
diff --git a/README_EN.md b/README_EN.md
index 3bc864e..2f65845 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
cn.6tail
lunar
- 1.2.2
+ 1.2.3
```
diff --git a/pom.xml b/pom.xml
index 29ffaf8..5ed9768 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
cn.6tail
lunar
jar
- 1.2.2
+ 1.2.3
${project.groupId}:${project.artifactId}
https://github.com/6tail/lunar-java
a calendar library for Solar and Chinese Lunar
diff --git a/src/main/java/com/nlf/calendar/Lunar.java b/src/main/java/com/nlf/calendar/Lunar.java
index 3723a69..71ec44f 100644
--- a/src/main/java/com/nlf/calendar/Lunar.java
+++ b/src/main/java/com/nlf/calendar/Lunar.java
@@ -298,12 +298,14 @@ public class Lunar {
private void computeMonth() {
Solar start = null;
Solar end;
+ String ymd = solar.toYmd();
+ String time = solar.toYmdHms();
+ int size = JIE_QI_IN_USE.length;
//序号:大雪以前-3,大雪到小寒之间-2,小寒到立春之间-1,立春之后0
int index = -3;
- for (int i=0,j=JIE_QI_IN_USE.length;i= 0 && ymd.compareTo(end.toYmd()) < 0) {
break;
@@ -313,27 +315,26 @@ public class Lunar {
}
//干偏移值(以立春当天起算)
- int gOffset = (((yearGanIndexByLiChun+(index<0?1:0)) % 5 + 1) * 2) % 10;
- monthGanIndex = ((index<0?index+10:index) + gOffset) % 10;
+ int offset = (((yearGanIndexByLiChun+(index<0?1:0)) % 5 + 1) * 2) % 10;
+ monthGanIndex = ((index<0?index+10:index) + offset) % 10;
monthZhiIndex = ((index<0?index+12:index) + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12;
- int indexExact = -3;
start = null;
- for (int i=0,j=JIE_QI_IN_USE.length;i= 0 && time.compareTo(end.toYmdHms()) < 0) {
break;
}
start = end;
- indexExact++;
+ index++;
}
//干偏移值(以立春交接时刻起算)
- int gOffsetExact = (((yearGanIndexExact+(indexExact<0?1:0)) % 5 + 1) * 2) % 10;
- monthGanIndexExact = ((indexExact<0?indexExact+10:indexExact) + gOffsetExact) % 10;
- monthZhiIndexExact = ((indexExact<0?indexExact+12:indexExact) + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12;
+ offset = (((yearGanIndexExact+(index<0?1:0)) % 5 + 1) * 2) % 10;
+ monthGanIndexExact = ((index<0?index+10:index) + offset) % 10;
+ monthZhiIndexExact = ((index<0?index+12:index) + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12;
}
/**
@@ -829,14 +830,12 @@ public class Lunar {
*/
public String getJie() {
String jie = "";
- for(int i=0,j=JIE_QI.length;i= 29 && year != next(1).getYear()) {
+ l.add("除夕");
+ }
return l;
}
diff --git a/src/main/java/com/nlf/calendar/util/LunarUtil.java b/src/main/java/com/nlf/calendar/util/LunarUtil.java
index 2a41fe7..ef6945b 100644
--- a/src/main/java/com/nlf/calendar/util/LunarUtil.java
+++ b/src/main/java/com/nlf/calendar/util/LunarUtil.java
@@ -128,7 +128,6 @@ public class LunarUtil{
put("8-15","中秋节");
put("9-9","重阳节");
put("12-8","腊八节");
- put("12-30","除夕");
}
};
/** 农历日期对应的非正式节日,参考《寿康宝鉴》 */
@@ -1186,7 +1185,8 @@ public class LunarUtil{
}
}
if(matched) {
- String ys = left.substring(left.indexOf(":") + 1, left.indexOf(","));
+ String ys = left.substring(left.indexOf(':') + 1);
+ ys = ys.substring(0, ys.indexOf(','));
for (int i = 0, j = ys.length(); i < j; i += 2) {
String m = ys.substring(i, i + 2);
l.add(YI_JI[Integer.parseInt(m,16)]);
diff --git a/src/test/java/test/LunarTest.java b/src/test/java/test/LunarTest.java
index e4fcd3d..d696e18 100644
--- a/src/test/java/test/LunarTest.java
+++ b/src/test/java/test/LunarTest.java
@@ -125,6 +125,31 @@ public class LunarTest {
Assert.assertEquals("2020-01-06",lunar.getSolar().toString());
}
+ @Test
+ public void test18(){
+ Lunar lunar = new Lunar(2021,12,29);
+ Assert.assertEquals("除夕",lunar.getFestivals().get(0));
+ }
+
+ @Test
+ public void test19(){
+ Lunar lunar = new Lunar(2020,12,30);
+ Assert.assertEquals("除夕",lunar.getFestivals().get(0));
+ }
+
+ @Test
+ public void test20(){
+ Lunar lunar = new Lunar(2020,12,29);
+ Assert.assertEquals(0,lunar.getFestivals().size());
+ }
+
+ @Test
+ public void test21(){
+ Solar solar = Solar.fromYmd(2022, 1, 31);
+ Lunar lunar = solar.getLunar();
+ Assert.assertEquals("除夕",lunar.getFestivals().get(0));
+ }
+
@Test
public void testNext(){
Solar solar = new Solar(2020,1,10,12,0,0);