mirror of
https://github.com/muhac/chinese-holidays-calendar.git
synced 2024-11-27 01:50:00 +08:00
support December of last year
This commit is contained in:
parent
ac123b2fe7
commit
bca7001ebb
@ -1,12 +1,11 @@
|
||||
// automatically generated by crawler.py (3/27/2022)
|
||||
// manually checked by DATA NOT VERIFIED
|
||||
|
||||
// manually checked by @bugstop (3/27/2022)
|
||||
// source: http://www.gov.cn/zhengce/content/2017-11/30/content_5243579.htm
|
||||
|
||||
元旦;1.1; // 1月1日放假,与周末连休。
|
||||
元旦;0.2-1.1; // 1月1日放假,与周末连休。
|
||||
春节;2.15-2.21;2.11,2.24 // 2月15日至21日放假调休,共7天。2月11日(星期日)、2月24日(星期六)上班。
|
||||
清明节;4.5-4.7;4.8 // 4月5日至7日放假调休,共3天。4月8日(星期日)上班。
|
||||
劳动节;4.29-5.1;4.28 // 4月29日至5月1日放假调休,共3天。4月28日(星期六)上班。
|
||||
端午节;6.18; // 6月18日放假,与周末连休。
|
||||
中秋节;9.24; // 9月24日放假,与周末连休。
|
||||
端午节;6.16-6.18; // 6月18日放假,与周末连休。
|
||||
中秋节;9.22-9.24; // 9月24日放假,与周末连休。
|
||||
国庆节;10.1-10.7;9.29,9.30 // 10月1日至7日放假调休,共7天。9月29日(星期六)、9月30日(星期日)上班。
|
@ -1,12 +1,11 @@
|
||||
// automatically generated by crawler.py (3/27/2022)
|
||||
// manually checked by DATA NOT VERIFIED
|
||||
|
||||
// manually checked by @bugstop (3/27/2022)
|
||||
// source: http://www.gov.cn/zhengce/content/2018-12/06/content_5346276.htm
|
||||
|
||||
元旦;12.30;12.29 // 2018年12月30日至2019年1月1日放假调休,共3天。2018年12月29日(星期六)上班。
|
||||
元旦;0.2-1.1;0.3 // 2018年12月30日至2019年1月1日放假调休,共3天。2018年12月29日(星期六)上班。
|
||||
春节;2.4-2.10;2.2,2.3 // 2月4日至10日放假调休,共7天。2月2日(星期六)、2月3日(星期日)上班。
|
||||
清明节;4.5; // 4月5日放假,与周末连休。
|
||||
清明节;4.5-4.7; // 4月5日放假,与周末连休。
|
||||
劳动节;5.1; // 5月1日放假。
|
||||
端午节;6.7; // 6月7日放假,与周末连休。
|
||||
中秋节;9.13; // 9月13日放假,与周末连休。
|
||||
端午节;6.7-6.9; // 6月7日放假,与周末连休。
|
||||
中秋节;9.13-9.15; // 9月13日放假,与周末连休。
|
||||
国庆节;10.1-10.7;9.29,10.12 // 10月1日至7日放假调休,共7天。9月29日(星期日)、10月12日(星期六)上班。
|
@ -1,6 +1,5 @@
|
||||
// automatically generated by crawler.py (3/27/2022)
|
||||
// manually checked by DATA NOT VERIFIED
|
||||
|
||||
// manually checked by @bugstop (3/27/2022)
|
||||
// source: http://www.gov.cn/zhengce/content/2019-11/21/content_5454164.htm
|
||||
|
||||
元旦;1.1; // 2020年1月1日放假,共1天。
|
||||
|
@ -1,6 +1,5 @@
|
||||
// automatically generated by crawler.py (3/27/2022)
|
||||
// manually checked by @bugstop (3/27/2022)
|
||||
|
||||
// source: http://www.gov.cn/zhengce/content/2020-11/25/content_5564127.htm
|
||||
|
||||
元旦;1.1-1.3; // 2021年1月1日至3日放假,共3天。
|
||||
|
@ -1,6 +1,5 @@
|
||||
// automatically generated by crawler.py (3/27/2022)
|
||||
// manually checked by @bugstop (3/27/2022)
|
||||
|
||||
// source: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
|
||||
|
||||
元旦;1.1-1.3; // 2022年1月1日至3日放假,共3天。
|
||||
|
@ -2,9 +2,10 @@ package input
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"main/parse/base"
|
||||
"main/parse/data"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func NewParser() data.Parser {
|
||||
@ -34,7 +35,7 @@ func parse(raw data.InputRaw) (result base.Holidays, err error) {
|
||||
Group: groupName,
|
||||
Name: info[0],
|
||||
Nth: i + 1,
|
||||
Date: date(raw.Year, day),
|
||||
Date: day,
|
||||
Type: base.Rest,
|
||||
}
|
||||
result = append(result, restDay)
|
||||
@ -46,7 +47,7 @@ func parse(raw data.InputRaw) (result base.Holidays, err error) {
|
||||
Group: groupName,
|
||||
Name: info[0],
|
||||
Nth: i + 1,
|
||||
Date: date(raw.Year, day),
|
||||
Date: day,
|
||||
Type: base.Work,
|
||||
}
|
||||
result = append(result, workDay)
|
||||
|
@ -2,6 +2,7 @@ package input
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
@ -9,10 +10,15 @@ import (
|
||||
func date(year int, date string) (result time.Time) {
|
||||
input := fmt.Sprintf("%04d-%s", year, date)
|
||||
result, _ = time.Parse("2006-1.2", input)
|
||||
|
||||
if date[0] == '0' { // => 0001-1.1
|
||||
delta, _ := strconv.Atoi(date[2:]) // days before
|
||||
result = result.AddDate(year-1, 0, -delta)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func holidays(year int, daysRaw string) (result []string) {
|
||||
func holidays(year int, daysRaw string) (result []time.Time) {
|
||||
if daysRaw == "" {
|
||||
return
|
||||
}
|
||||
@ -22,10 +28,10 @@ func holidays(year int, daysRaw string) (result []string) {
|
||||
if strings.Contains(day, "-") {
|
||||
period := strings.Split(day, "-")
|
||||
for d := date(year, period[0]); !d.After(date(year, period[1])); d = d.AddDate(0, 0, 1) {
|
||||
result = append(result, d.Format("1.2"))
|
||||
result = append(result, d)
|
||||
}
|
||||
} else {
|
||||
result = append(result, day)
|
||||
result = append(result, date(year, day))
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
@ -21,6 +21,7 @@ func Test_date(t *testing.T) {
|
||||
{"3", args{2003, "11.1"}, time.Date(2003, 11, 1, 0, 0, 0, 0, time.UTC)},
|
||||
{"4", args{2004, "11.11"}, time.Date(2004, 11, 11, 0, 0, 0, 0, time.UTC)},
|
||||
{"5", args{2005, "1.41"}, time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC)},
|
||||
{"6", args{2006, "0.1"}, time.Date(2005, 12, 31, 0, 0, 0, 0, time.UTC)},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
@ -41,16 +42,22 @@ func Test_holidays(t *testing.T) {
|
||||
args args
|
||||
wantResult []string
|
||||
}{
|
||||
{"1", args{1, "1.1"}, []string{"1.1"}},
|
||||
{"2", args{1, "1.1,2.2"}, []string{"1.1", "2.2"}},
|
||||
{"3", args{1, "1.1-1.3"}, []string{"1.1", "1.2", "1.3"}},
|
||||
{"4", args{1, "1.1-1.3,2.2,3.3-3.4"}, []string{"1.1", "1.2", "1.3", "2.2", "3.3", "3.4"}},
|
||||
{"5", args{1, "1.31-2.2"}, []string{"1.31", "2.1", "2.2"}},
|
||||
{"1", args{1, "1.1"}, []string{"01.1.1"}},
|
||||
{"2", args{1, "1.1,2.2"}, []string{"01.1.1", "01.2.2"}},
|
||||
{"3", args{1, "1.1-1.3"}, []string{"01.1.1", "01.1.2", "01.1.3"}},
|
||||
{"4", args{1, "1.1-1.3,2.2,3.3-3.4"}, []string{"01.1.1", "01.1.2", "01.1.3", "01.2.2", "01.3.3", "01.3.4"}},
|
||||
{"5", args{1, "1.31-2.2"}, []string{"01.1.31", "01.2.1", "01.2.2"}},
|
||||
{"6", args{1, "0.2"}, []string{"00.12.30"}},
|
||||
{"7", args{1, "0.4-0.1"}, []string{"00.12.28", "00.12.29", "00.12.30", "00.12.31"}},
|
||||
{"8", args{1, "0.2-1.2"}, []string{"00.12.30", "00.12.31", "01.1.1", "01.1.2"}},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if gotResult := holidays(tt.args.year, tt.args.daysRaw); !reflect.DeepEqual(gotResult, tt.wantResult) {
|
||||
t.Errorf("holidays() = %v, want %v", gotResult, tt.wantResult)
|
||||
gotResult := holidays(tt.args.year, tt.args.daysRaw)
|
||||
for idx, result := range gotResult{
|
||||
if !reflect.DeepEqual(result.Format("06.1.2"), tt.wantResult[idx]) {
|
||||
t.Errorf("holidays() = %v, want %v", result, tt.wantResult[idx])
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user