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