From 1aefcdcf0c51ff5248caa9a73abd8c220fea273a Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Fri, 20 May 2022 20:11:17 +0800 Subject: [PATCH] =?UTF-8?q?v1.2.24=20=E8=8A=82=E5=81=87=E6=97=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=94=AF=E6=8C=81=E5=88=A0=E9=99=A4=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 +- .../com/nlf/calendar/util/HolidayUtil.java | 27 +++++++++++-------- src/test/java/test/HolidayTest.java | 11 ++++++++ 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index cd93a35..d3a5620 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历) cn.6tail lunar - 1.2.23 + 1.2.24 ``` diff --git a/README_EN.md b/README_EN.md index ef611bf..5fc32fa 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.23 + 1.2.24 ``` diff --git a/pom.xml b/pom.xml index d722b96..c10b34d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ cn.6tail lunar jar - 1.2.23 + 1.2.24 ${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/util/HolidayUtil.java b/src/main/java/com/nlf/calendar/util/HolidayUtil.java index df07638..c93d56f 100644 --- a/src/main/java/com/nlf/calendar/util/HolidayUtil.java +++ b/src/main/java/com/nlf/calendar/util/HolidayUtil.java @@ -17,6 +17,8 @@ public class HolidayUtil { private static final int SIZE = 18; /** 0 */ private static final char ZERO = '0'; + /** 删除标识 */ + private static final String TAG_REMOVE = "~"; /** 默认节假日名称(元旦0,春节1,清明2,劳动3,端午4,中秋5,国庆6,国庆中秋7,抗战胜利日8) */ public static final String[] NAMES = {"元旦节","春节","清明节","劳动节","端午节","中秋节","国庆节","国庆中秋","抗战胜利日"}; /** 默认节假日数据,日期YYYYMMDD+名称下标+是否调休+对应节日YYYYMMDD */ @@ -188,35 +190,38 @@ public class HolidayUtil { * @param data 需要修正或追加的节假日数据,每18位表示1天依次排列,格式:当天年月日YYYYMMDD(8位)+节假日名称下标(1位)+调休标识(1位)+节假日当天YYYYMMDD(8位)。例:202005023120200501代表2020-05-02为劳动节放假,对应节假日为2020-05-01 */ public static void fix(String[] names, String data){ - if(null!=names){ + if(null != names){ NAMES_IN_USE = names; } - if(null==data){ + if(null == data){ return; } StringBuilder append = new StringBuilder(); - while(data.length()>=SIZE){ - String segment = data.substring(0,SIZE); - String day = segment.substring(0,8); + while(data.length() >= SIZE){ + String segment = data.substring(0, SIZE); + String day = segment.substring(0, 8); + boolean remove = TAG_REMOVE.equals(segment.substring(8, 9)); Holiday holiday = getHoliday(day); - if(null==holiday){ - append.append(segment); + if(null == holiday){ + if (!remove) { + append.append(segment); + } }else{ int nameIndex = -1; - for(int i=0,j=NAMES_IN_USE.length;i-1) { - String old = day+(char)(nameIndex+ZERO)+(holiday.isWork()?ZERO:'1')+holiday.getTarget().replace("-",""); - DATA_IN_USE = DATA_IN_USE.replace(old, segment); + String old = day + (char)(nameIndex + ZERO) + (holiday.isWork() ? ZERO : '1') + holiday.getTarget().replace("-",""); + DATA_IN_USE = DATA_IN_USE.replace(old, remove ? "" : segment); } } data = data.substring(SIZE); } - if(append.length()>0){ + if(append.length() > 0){ DATA_IN_USE += append.toString(); } } diff --git a/src/test/java/test/HolidayTest.java b/src/test/java/test/HolidayTest.java index bf571e7..384a29d 100644 --- a/src/test/java/test/HolidayTest.java +++ b/src/test/java/test/HolidayTest.java @@ -125,4 +125,15 @@ public class HolidayTest { Assert.assertNotNull(holiday.getTarget()); Assert.assertEquals("2016-10-01",holiday.getTarget()); } + + @Test + public void testRemove() { + Holiday holiday = HolidayUtil.getHoliday(2010,1,1); + Assert.assertNotNull(holiday); + Assert.assertEquals("元旦",holiday.getName()); + + HolidayUtil.fix("20100101~000000000000000000000000000"); + holiday = HolidayUtil.getHoliday(2010,1,1); + Assert.assertNull(holiday); + } }