## 数据修正及补充 由于默认法定节假日数据来源于国务院办公厅发布的通知,一般要年底才发布下一年的节假日安排,所以存在更新及时性的问题,可以在默认节假日数据的基础上,自行修改默认数据,或者追加新的数据。 1. fix(names, data) > 修正或追加节假日数据 2. fix(data) > 等同于fix(null, data)
names
(字符串数组)用于替换默认的节假日名称列表,当
names
传
null
时,保持默认的节假日名称。
data
(字符串)为需要修正或追加的节假日数据,当
data
传
null
(go语言传空字符串)时,仅修改默认节假日名称。每18位表示1天依次排列,格式:当天年月日YYYYMMDD(8位)+节假日名称下标(1位)+调休标识(1位)+节假日当天YYYYMMDD(8位)。其中节假日名称下标从0开始,超过9的,按ASCII码表依次往后排列;调休标识0为上班,否则放假。示例:202005023120200501代表2020-05-02为劳动节放假,对应节假日为2020-05-01。 2023年的修正数据参考(来源于 [国务院办公厅关于2023年部分节假日安排的通知](http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm)): 202212310120230101202301010120230101202301020120230101202301211120230122202301221120230122202301231120230122202301241120230122202301251120230122202301261120230122202301271120230122202301281020230122202301291020230122202304052120230405202304233020230501202304293120230501202304303120230501202305013120230501202305023120230501202305033120230501202305063020230501202306224120230622202306234120230622202306244120230622202306254020230622202309295120230929202309306120231001202310016120231001202310026120231001202310036120231001202310046120231001202310056120231001202310066120231001202310076020231001202310086020231001 2022年的修正数据参考(来源于 [国务院办公厅关于2022年部分节假日安排的通知](http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm)): 202201010120220101202201020120220101202201030120220101202201291020220201202201301020220201202201311120220201202202011120220201202202021120220201202202031120220201202202041120220201202202051120220201202202061120220201202204022020220405202204032120220405202204042120220405202204052120220405202204243020220501202204303120220501202205013120220501202205023120220501202205033120220501202205043120220501202205073020220501202206034120220603202206044120220603202206054120220603202209105120220910202209115120220910202209125120220910202210016120221001202210026120221001202210036120221001202210046120221001202210056120221001202210066120221001202210076120221001202210086020221001202210096020221001 如果需要删除指定节假日,可将
节假日名称下标
置为
~
,例如下例数据将删除2010年1月1日的节日数据: 20100101~000000000000000000000000000 由于数据已删除,后续的内容都无意义,所以可直接全部用0替代,但总位数不能少。 节假日名称下标对应ASCII码表如下:
下标
ASCII(名称)
下标
ASCII
下标
ASCII
下标
ASCII
下标
ASCII
下标
ASCII
下标
ASCII
下标
ASCII
0
0(元旦节)
10
:
20
D
30
N
40
X
50
b
60
l
70
v
1
1(春节)
11
;
21
E
31
O
41
Y
51
c
61
m
71
w
2
2(清明节)
12
<
22
F
32
P
42
Z
52
d
62
n
72
x
3
3(劳动节)
13
=
23
G
33
Q
43
[
53
e
63
o
73
y
4
4(端午节)
14
>
24
H
34
R
44
\
54
f
64
p
74
z
5
5(中秋节)
15
?
25
I
35
S
45
]
55
g
65
q
75
{
6
6(国庆节)
16
@
26
J
36
T
46
^
56
h
66
r
76
|
7
7(国庆中秋)
17
A
27
K
37
U
47
_
57
i
67
s
77
}
8
8(抗战胜利日)
18
B
28
L
38
V
48
`
58
j
68
t
78
~(删除指定节假日)
9
9
19
C
29
M
39
W
49
a
59
k
69
u
注:
红色
为默认已使用的节假日。 ### 示例代码
javascript
java
csharp
php
python
go
// 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil.fix('202001011120200101209901010120990101'); console.log(HolidayUtil.getHoliday('2020-01-01')); console.log(HolidayUtil.getHoliday('2099-01-01')); // 将元旦节改为元旦 String[] names = HolidayUtil.NAMES; names[0] = '元旦'; HolidayUtil.fix(names, null); console.log(HolidayUtil.getHoliday('2099-01-01'));
// 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil.fix("202001011120200101209901010120990101"); System.out.println(HolidayUtil.getHoliday("2020-01-01")); System.out.println(HolidayUtil.getHoliday("2099-01-01")); // 将元旦节改为元旦 String[] names = HolidayUtil.NAMES; names[0] = "元旦"; HolidayUtil.fix(names, null); System.out.println(HolidayUtil.getHoliday("2099-01-01"));
// 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil.fix("202001011120200101209901010120990101"); Console.WriteLine(HolidayUtil.getHoliday("2020-01-01")); Console.WriteLine(HolidayUtil.getHoliday("2099-01-01")); // 将元旦节改为元旦 string[] names = HolidayUtil.NAMES; names[0] = "元旦"; HolidayUtil.fix(names, null); Console.WriteLine(HolidayUtil.getHoliday("2099-01-01"));
// 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil::fix(null, '202001011120200101209901010120990101'); echo HolidayUtil::getHoliday('2020-01-01'); echo HolidayUtil::getHoliday('2099-01-01'); // 将元旦节改为元旦 $names = HolidayUtil::$NAMES; $names[0] = '元旦'; HolidayUtil::fix($names, null); echo HolidayUtil::getHoliday('2099-01-01');
# 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil.fix(None, "202001011120200101209901010120990101") print(HolidayUtil.getHoliday("2020-01-01")) print(HolidayUtil.getHoliday("2099-01-01")) # 将元旦节改为元旦 names = [] for i in range(0, len(HolidayUtil.NAMES)): names.append(HolidayUtil.NAMES[i]) names[0] = "元旦" HolidayUtil.fix(names, None) print(HolidayUtil.getHoliday("2099-01-01"))
# 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil.Fix(nil, "202001011120200101209901010120990101") fmt.Println(HolidayUtil.GetHoliday("2020-01-01")) fmt.Println(HolidayUtil.GetHoliday("2099-01-01")) # 将元旦节改为元旦 names := HolidayUtil.NAMES names[0] = "元旦" HolidayUtil.Fix(names, "") fmt.Println(HolidayUtil.GetHoliday("2099-01-01"))
### 输出