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);