From 869a9de697afc4fb71a1e01581a17b2a6f20885a Mon Sep 17 00:00:00 2001 From: Muhan Li Date: Mon, 6 Nov 2023 13:05:10 +0800 Subject: [PATCH] delete Go files --- .github/workflows/cd.yml | 15 +- .github/workflows/ci.yml | 13 - docs/holiday.ics | 2962 -------------------------------- go.mod | 10 - go.sum | 11 - main.go | 16 - parse/app/flow.go | 37 - parse/app/utils.go | 74 - parse/core/base.go | 42 - parse/data/input/parse.go | 63 - parse/data/input/utils.go | 39 - parse/data/input/utils_test.go | 64 - parse/data/io.go | 34 - parse/data/output/format.go | 40 - parse/data/output/utils.go | 49 - parse/data/read/read.go | 116 -- parse/data/read/read_test.go | 72 - parse/data/write/write.go | 41 - parser.cabal | 2 +- parser/Main/Input.hs | 8 +- 20 files changed, 14 insertions(+), 3694 deletions(-) delete mode 100644 docs/holiday.ics delete mode 100644 go.mod delete mode 100644 go.sum delete mode 100644 main.go delete mode 100644 parse/app/flow.go delete mode 100644 parse/app/utils.go delete mode 100644 parse/core/base.go delete mode 100644 parse/data/input/parse.go delete mode 100644 parse/data/input/utils.go delete mode 100644 parse/data/input/utils_test.go delete mode 100644 parse/data/io.go delete mode 100644 parse/data/output/format.go delete mode 100644 parse/data/output/utils.go delete mode 100644 parse/data/read/read.go delete mode 100644 parse/data/read/read_test.go delete mode 100644 parse/data/write/write.go diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 68357f3..b730b90 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -32,16 +32,19 @@ jobs: shell: bash run: python crawler.py - - name: Setup Go environment - uses: actions/setup-go@v4 + - name: Setup Haskell and Cabal + uses: haskell-actions/setup@v2 with: - go-version-file: go.mod + ghc-version: 9.2.8 + cabal-version: 3.10.1.0 - - name: Go Build - run: go build -o . main.go + - name: Configure and build + run: | + cabal configure --enable-tests --enable-benchmarks --disable-documentation + cabal build all - name: Generate ICS files - run: ./main + run: cabal run - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26f9626..3f07d48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,19 +97,6 @@ jobs: path: parser/ fail-on: warning - golint: - name: Golint - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: golangci-lint - uses: golangci/golangci-lint-action@v3 - with: - version: latest - working-directory: . - pylint: name: Pylint runs-on: ubuntu-latest diff --git a/docs/holiday.ics b/docs/holiday.ics deleted file mode 100644 index 43f3d8e..0000000 --- a/docs/holiday.ics +++ /dev/null @@ -1,2962 +0,0 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//Rank Technology//Chinese Holidays//EN -X-WR-CALNAME:节假日 - - -BEGIN:VEVENT -UID:ca4a59f7-0cd0-4c12-a09f-53faad606cba -DTSTART;VALUE=DATE:20130101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:149293c4-b66f-474b-8239-28d42925845f -DTSTART;VALUE=DATE:20130102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:fae5bc33-05fd-4e59-8f37-eabc6a9c6480 -DTSTART;VALUE=DATE:20130103 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:5cc030e9-40b1-49a7-8fc0-38d348791810 -DTSTART;VALUE=DATE:20130105 -SUMMARY:元旦补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:1f0cba61-b909-4a87-981b-1f5cf26f358a -DTSTART;VALUE=DATE:20130106 -SUMMARY:元旦补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:42ada70d-4a5f-4c45-ad9a-0017b284ef2a -DTSTART;VALUE=DATE:20130209 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:a1ec86f2-343f-436a-ba54-5ae977b1a497 -DTSTART;VALUE=DATE:20130210 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:387d1488-b1b8-46c6-8444-e3533607c4ff -DTSTART;VALUE=DATE:20130211 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9924eeaa-ce17-473f-9df9-b3fb0976e2f2 -DTSTART;VALUE=DATE:20130212 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:7bd5f5d2-7525-4581-ae66-836d4c443e81 -DTSTART;VALUE=DATE:20130213 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:2c604242-75cd-43cc-afa5-bca58839e86b -DTSTART;VALUE=DATE:20130214 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:7d4d8020-ab9f-42b6-b313-b6960aa124a5 -DTSTART;VALUE=DATE:20130215 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:0b85a2c3-0638-469c-a5a8-67bf8e917c72 -DTSTART;VALUE=DATE:20130216 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:9a2c0f99-df2a-47c8-8a62-e41b1e0653bd -DTSTART;VALUE=DATE:20130217 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:ff3f7254-7adf-4778-9182-78d8cfa0388f -DTSTART;VALUE=DATE:20130404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:84353e5b-0383-4031-bfef-e5cdd75f0124 -DTSTART;VALUE=DATE:20130405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:526cb7ad-3b9a-4b01-8975-b77865202d31 -DTSTART;VALUE=DATE:20130406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:14240a32-14d7-4824-b181-8153715f98f3 -DTSTART;VALUE=DATE:20130407 -SUMMARY:清明节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:dcc0d4d1-01e6-4e63-b381-1d1fad9af30a -DTSTART;VALUE=DATE:20130427 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:390ab7cf-2dc2-4db3-bf8f-b2be9caf9854 -DTSTART;VALUE=DATE:20130428 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:f2d8093f-4d9f-47d9-baac-beaed26e6c3a -DTSTART;VALUE=DATE:20130429 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:ca4af325-feca-47ec-b2ff-403367ab75fc -DTSTART;VALUE=DATE:20130430 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:976726d2-1933-4a0d-b234-7d584971261e -DTSTART;VALUE=DATE:20130501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7c94ed47-3ee1-42eb-b5b4-84463118e213 -DTSTART;VALUE=DATE:20130608 -SUMMARY:端午节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:8942bbd3-89d4-4a00-a2e7-f0d8b5759b19 -DTSTART;VALUE=DATE:20130609 -SUMMARY:端午节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:567c82c1-4066-4e8b-b49c-f6aaaf4b045a -DTSTART;VALUE=DATE:20130610 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:eaa34fea-6857-477f-b2fe-f43a9213e9c9 -DTSTART;VALUE=DATE:20130611 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f39e0f4f-d5a1-4b7e-9a0c-d6b1a766e301 -DTSTART;VALUE=DATE:20130612 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:59b26f83-bf75-4043-ad79-5c0193886dc1 -DTSTART;VALUE=DATE:20130919 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d21292d3-5c6b-4150-9708-8d4383e52079 -DTSTART;VALUE=DATE:20130920 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:30c69b2a-3b42-49e4-9aa1-27aa85cebaf6 -DTSTART;VALUE=DATE:20130921 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:11f3da45-43eb-4c45-9883-8d12ae9c4e87 -DTSTART;VALUE=DATE:20130922 -SUMMARY:中秋节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:fdf2261e-e6f4-47d6-997a-493aa80f9d79 -DTSTART;VALUE=DATE:20130929 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:83916fed-629a-48f3-8245-20171bc1804a -DTSTART;VALUE=DATE:20131001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:bf9e45b2-d89f-470f-819f-6d15bdac29d0 -DTSTART;VALUE=DATE:20131002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c2b726f1-45fe-412c-bb68-8cfe58661d93 -DTSTART;VALUE=DATE:20131003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:0a8826f1-9eac-4079-9a65-915ce13d2d6c -DTSTART;VALUE=DATE:20131004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:35dcf18d-d41b-4d95-8038-753ca9923870 -DTSTART;VALUE=DATE:20131005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:49f34899-1bc6-4f0c-9662-1c6faf2ad67e -DTSTART;VALUE=DATE:20131006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:b0ae4c6f-3e8b-406a-84d8-9d79339f9e19 -DTSTART;VALUE=DATE:20131007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ebc43660-7638-46a9-b3d8-ca75e5dad1f1 -DTSTART;VALUE=DATE:20131012 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:0cf44edb-d317-4d21-a78b-4148c340f4b2 -DTSTART;VALUE=DATE:20140101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:377d671d-8475-46cd-8948-ce79f1e6383d -DTSTART;VALUE=DATE:20140126 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:cfd873dc-1afe-4e86-bff4-83028f0a2f1d -DTSTART;VALUE=DATE:20140131 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:e6b24e7b-ed6c-4b46-a492-27551b4dc7c2 -DTSTART;VALUE=DATE:20140201 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:458840f9-f70d-48b7-9b4f-74003da738a2 -DTSTART;VALUE=DATE:20140202 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:b377da72-57ab-4f23-97bf-c82ff31a2e3f -DTSTART;VALUE=DATE:20140203 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:399f5d00-16d7-4a26-a4ed-a5c69d5ba879 -DTSTART;VALUE=DATE:20140204 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:4f0657ff-8248-478c-8b50-9d32f00f8b43 -DTSTART;VALUE=DATE:20140205 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:35c108fe-cb91-47cb-a621-0b354b57674e -DTSTART;VALUE=DATE:20140206 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:844615ff-c87c-4b99-a8c2-2be59541fe38 -DTSTART;VALUE=DATE:20140208 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:eacbc541-6a71-4081-a360-95c65aa1c43f -DTSTART;VALUE=DATE:20140405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f5d722d8-b484-4d7f-9dcd-8456d463296d -DTSTART;VALUE=DATE:20140406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7974e8da-cc66-4686-a487-ce33030e3d5d -DTSTART;VALUE=DATE:20140407 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:315ed844-1e5e-4110-b309-a158ab32da7e -DTSTART;VALUE=DATE:20140501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:dff806fc-142e-4ea8-a3b9-fe1e0f8aaf87 -DTSTART;VALUE=DATE:20140502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:0a3c0d13-873f-4546-a29e-083c92897573 -DTSTART;VALUE=DATE:20140503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:645ce847-ec53-4508-b7bc-96561f943b24 -DTSTART;VALUE=DATE:20140504 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:ebbe5537-189a-492c-833e-dd87cb065eda -DTSTART;VALUE=DATE:20140531 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:1df205b8-6d8c-4bd1-9504-1cb4cc0da778 -DTSTART;VALUE=DATE:20140601 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a09d6889-e29d-480c-81f3-e93578a3bf41 -DTSTART;VALUE=DATE:20140602 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:5874a8b8-0fbc-4766-91a1-f7038f40fa53 -DTSTART;VALUE=DATE:20140906 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:4712be69-9387-473e-8cbb-40f86d8ff20f -DTSTART;VALUE=DATE:20140907 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a5018d49-88a8-4fd2-a7ea-805647836a59 -DTSTART;VALUE=DATE:20140908 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:6f71ffc4-a954-4749-8f3e-839d37b5fdb0 -DTSTART;VALUE=DATE:20140928 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:054b38e2-f20f-4906-a4e7-f8ff3423e993 -DTSTART;VALUE=DATE:20141001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c4eb7355-9d53-4b94-b474-c0d67f9b1651 -DTSTART;VALUE=DATE:20141002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:5024afb3-2c78-4aff-b7f5-a1ac0e65ce55 -DTSTART;VALUE=DATE:20141003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:919a3f1c-c2cd-4bc9-9662-2529dffc672f -DTSTART;VALUE=DATE:20141004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:33b9cbf3-5b02-44b2-af8f-ecd2b054dd8b -DTSTART;VALUE=DATE:20141005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:446425d2-ea46-4a95-b153-e98b612aac8f -DTSTART;VALUE=DATE:20141006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ad4831b2-cb73-4028-9b20-9c7af77b2f9d -DTSTART;VALUE=DATE:20141007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:8ecab76e-ed76-4d36-b525-3f093e68e6fd -DTSTART;VALUE=DATE:20141011 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:a22e71cb-fc90-46a7-af67-948e608d4646 -DTSTART;VALUE=DATE:20150101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d47b6a38-561f-4153-8b88-b422f59c2a91 -DTSTART;VALUE=DATE:20150102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:73d66fc6-7cb4-4128-8e44-1ec91e0448b9 -DTSTART;VALUE=DATE:20150103 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:40850b01-13bb-44ba-97ab-45b007604d93 -DTSTART;VALUE=DATE:20150104 -SUMMARY:元旦补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:44d6dd9c-cd00-4871-be99-96153f1cfbb0 -DTSTART;VALUE=DATE:20150215 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:c18aa7d0-b086-4b1b-9818-588e068b46ea -DTSTART;VALUE=DATE:20150218 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9dae6920-f1d3-46e9-aff6-b53daa8487a1 -DTSTART;VALUE=DATE:20150219 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:e0af2682-2a9d-4310-b9cb-0819f99989f6 -DTSTART;VALUE=DATE:20150220 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:58693210-a76b-462c-be0a-927c4dccb3cf -DTSTART;VALUE=DATE:20150221 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c875c5df-ba90-4559-98b2-e04cc9019d8f -DTSTART;VALUE=DATE:20150222 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:da55de12-6955-4fb3-ad95-428749e19301 -DTSTART;VALUE=DATE:20150223 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ef5b9432-b657-4d20-818f-b9a78ee367d6 -DTSTART;VALUE=DATE:20150224 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:847cf838-a9d5-4054-bebe-727c04c65f95 -DTSTART;VALUE=DATE:20150228 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:955773f4-dcbb-4982-920c-51b7f2ba909f -DTSTART;VALUE=DATE:20150404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:5053f13e-7600-475c-91ea-5c441fd831b8 -DTSTART;VALUE=DATE:20150405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d16210f9-035b-4046-a64d-4ffe9eeebe85 -DTSTART;VALUE=DATE:20150406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:b5bdc7d8-ae51-442f-87cd-ad686fa022f4 -DTSTART;VALUE=DATE:20150501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:9313a63e-3fba-4096-981f-7f939180b288 -DTSTART;VALUE=DATE:20150502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:ae85110a-b8ba-428c-9d05-1443c6dc25a7 -DTSTART;VALUE=DATE:20150503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:ef20f1f8-f0e4-4988-acd2-3cde76804393 -DTSTART;VALUE=DATE:20150620 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d3a1c3fb-3c83-468e-b54c-934202fddf24 -DTSTART;VALUE=DATE:20150621 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c8d3e8ea-ea58-4909-9f74-0c3303025028 -DTSTART;VALUE=DATE:20150622 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:6b7efab9-d98f-40cc-be28-acc49c9a4812 -DTSTART;VALUE=DATE:20150927 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:d71c577f-a37f-4f92-a566-d702e656add7 -DTSTART;VALUE=DATE:20151001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:42936b8b-f1a5-4c3c-9299-cfbbf021f991 -DTSTART;VALUE=DATE:20151002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:26c60e53-8b73-4060-ad08-c44cd4bad750 -DTSTART;VALUE=DATE:20151003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:d4c1e8df-bf18-47da-91aa-8e98ad09062d -DTSTART;VALUE=DATE:20151004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ee5351ed-bff3-4eda-89f5-1055caea553f -DTSTART;VALUE=DATE:20151005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9c139084-cd8a-4651-b097-1300f7cc8163 -DTSTART;VALUE=DATE:20151006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:2dec7fad-c760-45d3-9ad3-6d7c4b85bfa2 -DTSTART;VALUE=DATE:20151007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:21c30129-ebb5-48df-b799-47271179360c -DTSTART;VALUE=DATE:20151010 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:a96d3e75-88ba-41c1-96a0-7fa0a2d3d196 -DTSTART;VALUE=DATE:20160101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d905c70f-796b-4b11-ba76-953f865713ad -DTSTART;VALUE=DATE:20160102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:4c0567f4-57b7-4861-baa7-cc5704cf6f71 -DTSTART;VALUE=DATE:20160103 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:3c95a566-3223-48f8-a517-c032b4c27032 -DTSTART;VALUE=DATE:20160206 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:a4891d9b-7cb9-4998-bd94-36682f81b81b -DTSTART;VALUE=DATE:20160207 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ddd42489-70d1-4bab-8853-d9d65b73e23e -DTSTART;VALUE=DATE:20160208 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:4336f0a6-3c2b-4bd7-80c8-944c27832992 -DTSTART;VALUE=DATE:20160209 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:7e5c9c48-4a74-4336-ba4a-c7651a58cac2 -DTSTART;VALUE=DATE:20160210 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:e03e9bbd-14c5-4e9c-93af-e8ae4100cba4 -DTSTART;VALUE=DATE:20160211 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:f373145f-b3ea-4b0a-a6b8-6206681907e2 -DTSTART;VALUE=DATE:20160212 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:f027c9cd-ec8b-46e6-819f-45c274e99e69 -DTSTART;VALUE=DATE:20160213 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:448bfc8c-d1a1-4929-b5fb-7b1424faf5ec -DTSTART;VALUE=DATE:20160214 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:d3543f6c-1cbb-495b-becd-9b286a40b37b -DTSTART;VALUE=DATE:20160402 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a29b8dcf-3644-4029-bb41-df860f5b80ad -DTSTART;VALUE=DATE:20160403 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d0da74bb-3ed5-4fa9-a240-841ef6432df6 -DTSTART;VALUE=DATE:20160404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:3aec9d5d-6c84-4ab4-a357-0f802fd14e07 -DTSTART;VALUE=DATE:20160430 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c213d32c-b773-4320-83cc-7e80ed947d3e -DTSTART;VALUE=DATE:20160501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:5ac89738-f92e-4f94-8936-82369a5ef38a -DTSTART;VALUE=DATE:20160502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f5e9098d-105d-4b4a-8798-f28a820c7761 -DTSTART;VALUE=DATE:20160609 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:0b821b6a-8e9b-48f4-aa5f-a96dfe41692f -DTSTART;VALUE=DATE:20160610 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:150adeac-3bc5-4db1-bd46-2ed20e5c2874 -DTSTART;VALUE=DATE:20160611 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:64c93a79-f2f8-4224-ac70-7d082458448e -DTSTART;VALUE=DATE:20160612 -SUMMARY:端午节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:ad4d8b28-0962-42f3-a53f-6752f79e9e9c -DTSTART;VALUE=DATE:20160915 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:141c87e9-9807-49e1-8afa-3afeffe16384 -DTSTART;VALUE=DATE:20160916 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:cb600531-d2d9-4962-8a81-329e1486f42a -DTSTART;VALUE=DATE:20160917 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d45f2dfe-c5b0-46f5-8448-a7a0534a6bc9 -DTSTART;VALUE=DATE:20160918 -SUMMARY:中秋节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:dc0415d3-d682-418d-9848-e56e69071c03 -DTSTART;VALUE=DATE:20161001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:2d217049-f74f-4e7f-b96d-ca71eb017e42 -DTSTART;VALUE=DATE:20161002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3910462d-0b98-462d-8d5e-bd3a3136fe96 -DTSTART;VALUE=DATE:20161003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:7335d8a7-7b6a-47e7-97c0-c2325fff9535 -DTSTART;VALUE=DATE:20161004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:1a561f13-c5e1-4363-a799-bbf24e4099c8 -DTSTART;VALUE=DATE:20161005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:e2694679-7c12-40f2-b381-6d3e2c8fa8b0 -DTSTART;VALUE=DATE:20161006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c35765ea-259a-4904-82e4-526f58a5e17a -DTSTART;VALUE=DATE:20161007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:7d33c6f3-d270-4883-aebf-1f59c180b465 -DTSTART;VALUE=DATE:20161008 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:062ac12c-4ba3-408a-80bc-8cdb44d7a9b9 -DTSTART;VALUE=DATE:20161009 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:86e9deae-82cb-48e2-b4ad-c0359ad15b6f -DTSTART;VALUE=DATE:20161231 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:067f28ed-685a-4ce6-a898-6bab41fd9377 -DTSTART;VALUE=DATE:20170101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:e3019115-ef05-4d69-884c-ddcddb83742a -DTSTART;VALUE=DATE:20170102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:6d3111d4-3dc7-49c6-8073-6216d98628d3 -DTSTART;VALUE=DATE:20170122 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:caf39e0e-4f1c-4dc4-8ad5-2d8dfd60f039 -DTSTART;VALUE=DATE:20170127 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:586bc97f-ca42-490d-9fc6-7ced85c5289a -DTSTART;VALUE=DATE:20170128 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:1f24c0d3-3031-4578-90e1-88e07b8f019e -DTSTART;VALUE=DATE:20170129 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:0e290569-a607-43d1-8a28-3bd8f6316d28 -DTSTART;VALUE=DATE:20170130 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:60ea0b93-845b-4b6d-aacd-72196aa4486f -DTSTART;VALUE=DATE:20170131 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:25711535-db8f-4a5d-92d4-5ceba6c601ee -DTSTART;VALUE=DATE:20170201 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:cec57ffc-4f01-47a0-bd83-ea86d558a1db -DTSTART;VALUE=DATE:20170202 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3649a234-3bc8-438c-85f0-369d33463c5d -DTSTART;VALUE=DATE:20170204 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:ff7d940b-aeda-4e76-9c22-9301a8e55878 -DTSTART;VALUE=DATE:20170401 -SUMMARY:清明节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:0148856d-6020-4252-b979-cfffc3de8dd3 -DTSTART;VALUE=DATE:20170402 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:99ad868c-4f00-4e3c-9594-a6a7948ded2a -DTSTART;VALUE=DATE:20170403 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:2b22eacb-96d7-42b9-be46-8946d78b1674 -DTSTART;VALUE=DATE:20170404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:6ab32528-92ba-4559-ad6d-19408580fcab -DTSTART;VALUE=DATE:20170429 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:97ed7489-b537-44d4-9520-6c76382c3e29 -DTSTART;VALUE=DATE:20170430 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:85ca39e8-dd8f-41cc-81ec-e8fe1cecfd2e -DTSTART;VALUE=DATE:20170501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:49dd719c-a1a4-430c-a95b-893f91514972 -DTSTART;VALUE=DATE:20170527 -SUMMARY:端午节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:feb1c7ab-0ae8-47e7-bc4e-e6ac4ac967ea -DTSTART;VALUE=DATE:20170528 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a3d826c7-6828-4343-ba25-fa3f67757359 -DTSTART;VALUE=DATE:20170529 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:e59070e7-3407-4013-b6e1-f6c3767735c3 -DTSTART;VALUE=DATE:20170530 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:08a8e9ab-ec1c-4527-abac-014885bb56d5 -DTSTART;VALUE=DATE:20170930 -SUMMARY:中秋节、国庆节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:bec45dd5-e561-40c6-bcd5-029cc5aac63b -DTSTART;VALUE=DATE:20171001 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第1天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:d071ea22-378d-481f-9025-0b92307daded -DTSTART;VALUE=DATE:20171002 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第2天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:1777e427-e210-408b-80c9-45fe1b23cda7 -DTSTART;VALUE=DATE:20171003 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第3天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:4fb9b1d9-65a8-4960-8118-018bea271cc0 -DTSTART;VALUE=DATE:20171004 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第4天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:2c6d642f-c909-42b1-8fa0-7dc5835ffe38 -DTSTART;VALUE=DATE:20171005 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第5天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:25175b2f-ae8e-4ff7-ba68-64c267a26a87 -DTSTART;VALUE=DATE:20171006 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第6天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:90acae5b-5eac-418c-9a11-75f662fbdeca -DTSTART;VALUE=DATE:20171007 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第7天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:7e3377fa-c94d-42ce-9382-1be506ccc8fc -DTSTART;VALUE=DATE:20171008 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第8天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:837dcc9b-8eac-49ac-b038-7a94c07f9140 -DTSTART;VALUE=DATE:20171230 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:98c093fe-6cd6-4b78-8ac4-55e6d3e316b7 -DTSTART;VALUE=DATE:20171231 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:bf658cd7-2a59-484b-b39c-d7ff2cd997d2 -DTSTART;VALUE=DATE:20180101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:fc6117f4-6f2c-444c-8ad8-b94de914c2c7 -DTSTART;VALUE=DATE:20180211 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:7f6760a4-d014-4890-88c3-1769583457a2 -DTSTART;VALUE=DATE:20180215 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:047b7f7f-e716-4048-b199-121de3ebc1a6 -DTSTART;VALUE=DATE:20180216 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:6e080e7f-44db-4d3b-870c-77c30a5d6f80 -DTSTART;VALUE=DATE:20180217 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:4e00c2bc-0a4e-44f9-a66b-897c9f5e0a66 -DTSTART;VALUE=DATE:20180218 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:263924b5-d8a7-49f8-bdd0-cdccf543b8cf -DTSTART;VALUE=DATE:20180219 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c1d53bd0-9cf2-4663-9bec-7f2202930bd4 -DTSTART;VALUE=DATE:20180220 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:817ee56b-3add-4db8-b73e-4d47a6fdab67 -DTSTART;VALUE=DATE:20180221 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3ab405ae-993c-49b1-90e9-37c079ebc26a -DTSTART;VALUE=DATE:20180224 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:ad49844f-b9b1-4388-b703-386d30d62b7b -DTSTART;VALUE=DATE:20180405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:8c5996d7-131e-47c9-82b4-5dfd672b68ca -DTSTART;VALUE=DATE:20180406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:79876ef5-b21f-4ce9-aa91-9c2f200f3269 -DTSTART;VALUE=DATE:20180407 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:1d441008-6319-4670-9a42-9d71d7c13de7 -DTSTART;VALUE=DATE:20180408 -SUMMARY:清明节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:7bcd6b44-83b1-4c6b-907d-f78dd86c576b -DTSTART;VALUE=DATE:20180428 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:d3aa12f8-880e-4e8e-aa30-6287e1eef259 -DTSTART;VALUE=DATE:20180429 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:81552128-ca42-4671-822d-cb0336649721 -DTSTART;VALUE=DATE:20180430 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:e98a6c29-7518-459a-a054-44ecbb5722ae -DTSTART;VALUE=DATE:20180501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:9d682bd9-7439-476a-b287-109cdf6be815 -DTSTART;VALUE=DATE:20180616 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:0d31c6ae-3f02-43fb-9502-0323a181b253 -DTSTART;VALUE=DATE:20180617 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:e3d03fdf-0e33-4b00-b370-530dc9c45c23 -DTSTART;VALUE=DATE:20180618 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a0081929-8cee-4699-8585-9ca85cc28a69 -DTSTART;VALUE=DATE:20180922 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:bcb4d977-615e-44a8-b15e-9d91d8b4dbcf -DTSTART;VALUE=DATE:20180923 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d8c87842-fa59-4b73-8b98-68e32c4bc006 -DTSTART;VALUE=DATE:20180924 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7d7cf212-9984-48bb-857c-c90e1bd53583 -DTSTART;VALUE=DATE:20180929 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:7c865102-292c-4ef5-b210-8e7615daa646 -DTSTART;VALUE=DATE:20180930 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:7e0e8673-0cad-43f8-b8f4-a44ddf3673f0 -DTSTART;VALUE=DATE:20181001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:bcc0198d-c229-4495-9085-9ecd21e40396 -DTSTART;VALUE=DATE:20181002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:bbe13e29-70b2-4b8c-8a6f-83209203bf74 -DTSTART;VALUE=DATE:20181003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:a436d9a2-ed18-496a-96a8-2eee6467cf86 -DTSTART;VALUE=DATE:20181004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:1c90a310-efff-40d3-a37f-d06e08e92f11 -DTSTART;VALUE=DATE:20181005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:8326f3b3-2948-448c-aff7-5aa9ca8b4fca -DTSTART;VALUE=DATE:20181006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:6f91790c-e515-4b15-9a49-f18dd775e23f -DTSTART;VALUE=DATE:20181007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:346002e7-2de7-47cc-b844-f67d01ee0260 -DTSTART;VALUE=DATE:20181229 -SUMMARY:元旦补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:97bf545c-def4-4198-a2b7-2096f224afcd -DTSTART;VALUE=DATE:20181230 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:e0e5aa30-f388-4da1-a58a-98c7b0821858 -DTSTART;VALUE=DATE:20181231 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:9ebbba01-605c-4014-af5a-d43c7f0878ac -DTSTART;VALUE=DATE:20190101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:db64af20-92b4-48a4-9c9b-ea2667edec93 -DTSTART;VALUE=DATE:20190202 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:178545a6-7750-48d5-9244-f08b4f098696 -DTSTART;VALUE=DATE:20190203 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:db7b2c63-8fc5-48cf-be7f-c94c482cac2a -DTSTART;VALUE=DATE:20190204 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:5b8d36ca-c040-4d46-8d4c-e7fe49ae1daa -DTSTART;VALUE=DATE:20190205 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3231b9b1-8a1b-4d81-a0e0-8bf64c9a8e2c -DTSTART;VALUE=DATE:20190206 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3d6f4b5c-f7d1-40bd-8221-a58d8350c28f -DTSTART;VALUE=DATE:20190207 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:39325d59-edd8-439d-bb60-d5558245e43e -DTSTART;VALUE=DATE:20190208 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:a5d8bf10-779a-45ed-b5bf-db3a49483715 -DTSTART;VALUE=DATE:20190209 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:145ea419-60ca-4a79-88b5-f52fa7e0969c -DTSTART;VALUE=DATE:20190210 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:aa1762e8-9e24-4f0f-8155-1a8c822ccc82 -DTSTART;VALUE=DATE:20190405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:40c167d4-3608-4b1b-9ca3-188486ab9bd8 -DTSTART;VALUE=DATE:20190406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:11d72207-d5f5-4ae1-84ed-e1440fde0203 -DTSTART;VALUE=DATE:20190407 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:86c7f236-358b-4f4e-99ee-8b5de46035e1 -DTSTART;VALUE=DATE:20190501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:06e475c1-c549-4eb6-89da-48158bd287cc -DTSTART;VALUE=DATE:20190607 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7957babf-b23b-4d23-8d7f-a17f3e0e4029 -DTSTART;VALUE=DATE:20190608 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:16d4a718-8f4d-471e-8d76-1d576d8dc309 -DTSTART;VALUE=DATE:20190609 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:086a4890-b730-48cf-aab8-8c14564e9d45 -DTSTART;VALUE=DATE:20190913 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f75d573e-57e2-43a1-b799-2accfd3c81fa -DTSTART;VALUE=DATE:20190914 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7b407bca-25db-4369-a0d8-240037bc96b3 -DTSTART;VALUE=DATE:20190915 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:47157858-3c1d-447f-90bf-b50bec1d3abf -DTSTART;VALUE=DATE:20190929 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:e2a9e35d-9048-4a4d-bb1f-0c3a483137f8 -DTSTART;VALUE=DATE:20191001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:67b059b2-289a-455d-9f65-52b581d9c25c -DTSTART;VALUE=DATE:20191002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:94727693-c829-4170-a543-94b389e32213 -DTSTART;VALUE=DATE:20191003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:dac71240-bdcf-4a1a-9eb9-589df411afe7 -DTSTART;VALUE=DATE:20191004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:aaf6fe5d-a05d-4224-90ab-0176a0afea74 -DTSTART;VALUE=DATE:20191005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:71727e4e-6586-452e-b17e-94fe24e2fe89 -DTSTART;VALUE=DATE:20191006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:1e621270-b645-40bf-8124-837974352be6 -DTSTART;VALUE=DATE:20191007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:6e66d875-3959-45d1-b461-e59acf928ae6 -DTSTART;VALUE=DATE:20191012 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:dcdb2a71-b019-473f-a359-63ba7bd23008 -DTSTART;VALUE=DATE:20200101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:d62af7f1-00b0-48a0-b0ef-99a2a54c2ae3 -DTSTART;VALUE=DATE:20200119 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:c6af4270-f386-41b8-bcb2-671c439d7910 -DTSTART;VALUE=DATE:20200124 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9190359d-4330-420b-bbd7-21b248a91b7c -DTSTART;VALUE=DATE:20200125 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:fb84887a-0e86-44f8-8852-5507e497ce70 -DTSTART;VALUE=DATE:20200126 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:0af6f74e-8437-42f0-a299-edcf08bbbc94 -DTSTART;VALUE=DATE:20200127 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:59202ba8-dcd0-4662-92f0-03bbdc5f90ed -DTSTART;VALUE=DATE:20200128 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:94a73a28-24b5-4eed-80c9-9f2e4645eddd -DTSTART;VALUE=DATE:20200129 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:99fc7519-70ae-456c-a758-04fa31013a19 -DTSTART;VALUE=DATE:20200130 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:096b852c-51db-4267-a12b-23ca81950517 -DTSTART;VALUE=DATE:20200201 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:7cbc0a43-3f38-46e0-b6e1-cd404e08a13d -DTSTART;VALUE=DATE:20200404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:b8676098-e18c-46fc-a3ca-1786d5386644 -DTSTART;VALUE=DATE:20200405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:ddbead78-fb46-4a5a-96d1-b92e6892a68b -DTSTART;VALUE=DATE:20200406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c502389a-ba0d-4d54-afb0-78c13eb80df1 -DTSTART;VALUE=DATE:20200426 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:c882b4d5-ba3f-4583-87a2-c4cb67e76a7d -DTSTART;VALUE=DATE:20200501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:6ccb5b48-f918-488d-8808-a71b76ca6f9c -DTSTART;VALUE=DATE:20200502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:cd032ef7-bc83-40d5-a603-f8df84f55709 -DTSTART;VALUE=DATE:20200503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:591f8547-5180-42c6-b597-6a6020268c1b -DTSTART;VALUE=DATE:20200504 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第4天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:9dd64e34-b516-4795-be1d-46b2830a19a1 -DTSTART;VALUE=DATE:20200505 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第5天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:58350ad1-eedf-478f-945b-2cad313f4f7d -DTSTART;VALUE=DATE:20200509 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:d01b8a70-d8a5-4caa-9f1f-2d9cfd2e5637 -DTSTART;VALUE=DATE:20200625 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:2bbc8fa6-f022-4907-8b0d-c1f69217169f -DTSTART;VALUE=DATE:20200626 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a93efd2d-1297-4626-becb-a191fbfc30e1 -DTSTART;VALUE=DATE:20200627 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c077c353-2fbb-43d7-99e0-c74f6cc1b518 -DTSTART;VALUE=DATE:20200628 -SUMMARY:端午节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:48fe5507-5219-4856-a169-3bf8c5b6bac0 -DTSTART;VALUE=DATE:20200927 -SUMMARY:国庆节、中秋节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:9cbd2ee6-c392-448b-8c1c-41662ab530ae -DTSTART;VALUE=DATE:20201001 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第1天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:9c11553e-8466-4da4-8da4-a1e6cfcfa768 -DTSTART;VALUE=DATE:20201002 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第2天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:291b6d99-67c9-4fa1-84cf-b3fffeffa187 -DTSTART;VALUE=DATE:20201003 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第3天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:3a9b774a-2c1b-49cc-a420-25182022dc81 -DTSTART;VALUE=DATE:20201004 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第4天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:19f55292-7871-44a9-900f-1b98c24f5ac1 -DTSTART;VALUE=DATE:20201005 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第5天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:2dac2290-836c-4a33-86dc-bc80ea3752d7 -DTSTART;VALUE=DATE:20201006 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第6天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:2af9460e-2cea-444f-99c1-40f529fd959f -DTSTART;VALUE=DATE:20201007 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第7天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:780fb952-a22e-4c34-88d7-b855e838d658 -DTSTART;VALUE=DATE:20201008 -SUMMARY:国庆节、中秋节假期 -DESCRIPTION:假期 第8天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:68c09ba8-fc0a-4df0-b226-5ae61287913c -DTSTART;VALUE=DATE:20201010 -SUMMARY:国庆节、中秋节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:e349531e-c805-453e-85be-0964888ff59b -DTSTART;VALUE=DATE:20210101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:5a6bec77-e123-42ef-a184-f0848231d0a5 -DTSTART;VALUE=DATE:20210102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:8626408b-871f-4a4c-a6a1-fd878ceb7e52 -DTSTART;VALUE=DATE:20210103 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:efc7a608-ee48-40d5-aea1-e9f779e9a1b9 -DTSTART;VALUE=DATE:20210207 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:ec1b1cf5-d1c6-426d-b5b7-355eb05c6c43 -DTSTART;VALUE=DATE:20210211 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:a29c12d3-8208-4f6d-827d-214468a9447f -DTSTART;VALUE=DATE:20210212 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:f82ee8f8-10d8-437b-a462-d81981e71154 -DTSTART;VALUE=DATE:20210213 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:16310e2f-e585-40f6-9525-07db7cbd22d2 -DTSTART;VALUE=DATE:20210214 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9dcbc2df-4d43-4a1d-a0f5-1c7362739606 -DTSTART;VALUE=DATE:20210215 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:13f6b35c-450c-430a-8c3b-18a4c970c116 -DTSTART;VALUE=DATE:20210216 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:aecabd3c-34bc-45eb-b571-f9ef93449d55 -DTSTART;VALUE=DATE:20210217 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:faf31d47-fe37-4b68-a4c7-e30b5fca05de -DTSTART;VALUE=DATE:20210220 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:883e134e-9c5a-470b-821d-3299e09d4dae -DTSTART;VALUE=DATE:20210403 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7c458ece-e169-47e8-8da4-b26ee776fff8 -DTSTART;VALUE=DATE:20210404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f13b37a9-d6ee-4e99-a72e-7abc2f007c57 -DTSTART;VALUE=DATE:20210405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:8c30c5c4-9265-449a-93f3-96d460592ae5 -DTSTART;VALUE=DATE:20210425 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:7516f7e4-fab3-48b6-8a2a-f04bf30f6e9d -DTSTART;VALUE=DATE:20210501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:fceaaae6-4110-4360-8700-3c85217ca37e -DTSTART;VALUE=DATE:20210502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:827dccf7-a47e-421f-9622-18116e5a12ee -DTSTART;VALUE=DATE:20210503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:c3ae30b7-2a41-4b9c-9a7e-a2bcc073cfb1 -DTSTART;VALUE=DATE:20210504 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第4天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:4388e4c8-1da9-4aa8-af80-7639a81ded1e -DTSTART;VALUE=DATE:20210505 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第5天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:1bb20b03-8b3f-49e0-a370-a6dfafe3c1ba -DTSTART;VALUE=DATE:20210508 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:1be7c645-1655-40ec-a833-b762e834fbb9 -DTSTART;VALUE=DATE:20210612 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:136f71e5-77da-4725-b4af-458340eb8a8a -DTSTART;VALUE=DATE:20210613 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7d2dbe0a-9647-4529-bf1f-721f21a126f4 -DTSTART;VALUE=DATE:20210614 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:510f4798-6f1d-4d9d-87bf-af316c0aee7d -DTSTART;VALUE=DATE:20210918 -SUMMARY:中秋节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:4263f7e8-98b2-45c3-b2a7-4648958b9256 -DTSTART;VALUE=DATE:20210919 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c4901216-5ad3-4042-a0fb-6ee1a4bf03c3 -DTSTART;VALUE=DATE:20210920 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:fb00c16f-a8c8-40ab-8ea7-2361cee3b6a9 -DTSTART;VALUE=DATE:20210921 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:6ac8af32-fc04-4e57-8710-36c02d285dd1 -DTSTART;VALUE=DATE:20210926 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:62d2250b-48a3-48da-b5b9-2bab3e08a474 -DTSTART;VALUE=DATE:20211001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:99f8a5a5-12d5-4dc5-89df-ca5cb7b28f62 -DTSTART;VALUE=DATE:20211002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c0336084-9a17-454f-851f-a4ff8e6a747a -DTSTART;VALUE=DATE:20211003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:fca007be-8865-48bc-9dfb-cc99797ca8e0 -DTSTART;VALUE=DATE:20211004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:eb904aa2-3623-424d-bf78-38d18c10835d -DTSTART;VALUE=DATE:20211005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9e1e181a-b51a-4cc7-9d49-75f02b920311 -DTSTART;VALUE=DATE:20211006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:fd6bcfaf-68e4-40b9-92f0-003e1f716f51 -DTSTART;VALUE=DATE:20211007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:b40af8b9-6626-4c18-a852-dcc393f2067c -DTSTART;VALUE=DATE:20211009 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:9ae87ee2-ac3d-4b64-ab71-61b5323f780a -DTSTART;VALUE=DATE:20220101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:3f2beb53-6c25-4d45-9379-261a754aa7d4 -DTSTART;VALUE=DATE:20220102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:255ae269-b1a5-4d11-9079-7e6c3391d7cd -DTSTART;VALUE=DATE:20220103 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:96b7fa6e-8afa-4e48-8268-2fe3edf9e15c -DTSTART;VALUE=DATE:20220129 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:12e8f8f9-f47a-4947-b80e-396a5ca03ab9 -DTSTART;VALUE=DATE:20220130 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:2944b3e3-e926-473f-97fd-880f59a4eff6 -DTSTART;VALUE=DATE:20220131 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3191a558-3055-487b-b5dc-de5ec5c22c66 -DTSTART;VALUE=DATE:20220201 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:fdec6eb0-9b90-4441-8646-d94b04c37930 -DTSTART;VALUE=DATE:20220202 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:90eb439a-307b-4aa7-bbff-e7f487405fae -DTSTART;VALUE=DATE:20220203 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:7b89d5ad-6a76-4ef9-9d4b-eb9a6e52f351 -DTSTART;VALUE=DATE:20220204 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9511d7c2-3caf-4895-a01e-2276ae30ba58 -DTSTART;VALUE=DATE:20220205 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:18a7d990-22ce-4e53-bee3-defa2b20aa8b -DTSTART;VALUE=DATE:20220206 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ee508c6d-a361-4091-8308-6dd7478d2619 -DTSTART;VALUE=DATE:20220402 -SUMMARY:清明节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:88072b9f-3f4e-45be-8ade-727f7f4c2689 -DTSTART;VALUE=DATE:20220403 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:23dee7a7-131b-41cd-ab97-feeacd98a105 -DTSTART;VALUE=DATE:20220404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:1b0692f3-29af-4ddb-98a2-8496706a6a70 -DTSTART;VALUE=DATE:20220405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:513771eb-237b-4357-81ad-d086adc054fa -DTSTART;VALUE=DATE:20220424 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:1d7237ea-273e-4edb-b9f2-42b1f24029ed -DTSTART;VALUE=DATE:20220430 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:c86482f1-7a86-4790-8b5f-03eda568bdae -DTSTART;VALUE=DATE:20220501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:2c3c2700-5fbf-4f45-be1e-92917972f8d3 -DTSTART;VALUE=DATE:20220502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:e4f964ea-8a23-4915-b64b-f1af323be50b -DTSTART;VALUE=DATE:20220503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第4天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:4b547347-09bb-49c4-8ff1-4e031b46236a -DTSTART;VALUE=DATE:20220504 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第5天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:14fdc008-032c-4671-9e86-ee6ff469be47 -DTSTART;VALUE=DATE:20220507 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:4cdff4eb-5a2c-4f01-874a-4cca376f4f0c -DTSTART;VALUE=DATE:20220603 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:aa625972-c36d-49a5-9e7e-15c2c53cc0d6 -DTSTART;VALUE=DATE:20220604 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:d3141c70-2373-4416-bea1-bd12abcee495 -DTSTART;VALUE=DATE:20220605 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f506a96b-d145-4951-a86d-59a84c916096 -DTSTART;VALUE=DATE:20220910 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:e8765be5-c22e-4143-bb32-e41738d8f0c5 -DTSTART;VALUE=DATE:20220911 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:eb6a55e6-e9d4-4491-9505-1610f02ba027 -DTSTART;VALUE=DATE:20220912 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:fd89f316-bb2c-4087-873c-50a140a13a3d -DTSTART;VALUE=DATE:20221001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:f7630c3b-ce90-443c-a896-dd44bc069656 -DTSTART;VALUE=DATE:20221002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:1670892d-a721-47ce-8033-bc408c020a2e -DTSTART;VALUE=DATE:20221003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:a9a3082a-113d-4154-b7b9-97a3e63bb7f1 -DTSTART;VALUE=DATE:20221004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:4b47af21-e8c6-4874-887c-4a5a0ceea928 -DTSTART;VALUE=DATE:20221005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:9ab99796-9c46-445c-be45-c7f86dc8f203 -DTSTART;VALUE=DATE:20221006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:608d4d22-cb6d-4e8f-8b29-3fdeb2f26cee -DTSTART;VALUE=DATE:20221007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c805e05e-6796-4f80-93b0-a789f26a0d4d -DTSTART;VALUE=DATE:20221008 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:c5a8d68f-b9ce-462f-9044-40ebbacdf955 -DTSTART;VALUE=DATE:20221009 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:323db217-0860-45e4-a452-ae1a302dd5ef -DTSTART;VALUE=DATE:20221231 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:7263a02e-a583-4076-abd2-b9247b50a558 -DTSTART;VALUE=DATE:20230101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:3f8dc901-d9c5-4bce-86de-2e21d3fe3220 -DTSTART;VALUE=DATE:20230102 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:ba1074f4-55c6-42f4-870c-eb3b1d1e2c0f -DTSTART;VALUE=DATE:20230121 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:c6e6bfda-9a15-4e6a-a763-93ae0eb11ab5 -DTSTART;VALUE=DATE:20230122 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:15698751-56ce-4fdc-aed0-c0b056667f00 -DTSTART;VALUE=DATE:20230123 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:f227c3ef-ad89-4230-b833-0c2d5f238015 -DTSTART;VALUE=DATE:20230124 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ae9bcbd2-4a6e-4a41-96a6-835c84df79c2 -DTSTART;VALUE=DATE:20230125 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ba1b98f3-c8bc-4621-af86-fb4a63cd8bc7 -DTSTART;VALUE=DATE:20230126 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ed42a0e3-d550-4301-831a-92a11218233d -DTSTART;VALUE=DATE:20230127 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:e28f8cb8-b0a6-4819-beca-93c4ab352447 -DTSTART;VALUE=DATE:20230128 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:7e8fef38-8f2c-40a6-940a-43dc710c1166 -DTSTART;VALUE=DATE:20230129 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:bc46914f-d07c-42e1-b8a0-1b3eea8b9b4b -DTSTART;VALUE=DATE:20230405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:a3e0daf4-6db8-4644-975f-9765056778f8 -DTSTART;VALUE=DATE:20230423 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:e4ba6dbb-99b4-47b7-8d3a-e2efc243969f -DTSTART;VALUE=DATE:20230429 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:d5bf68d8-76ad-4652-b251-6eeb2382d632 -DTSTART;VALUE=DATE:20230430 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:50f1c3a0-ac64-486b-b80e-ea0c958e0528 -DTSTART;VALUE=DATE:20230501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:a331d9d4-dd9a-479f-a964-6dc19b356026 -DTSTART;VALUE=DATE:20230502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第4天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:33ceef41-5604-445f-aa21-3fe15f00f247 -DTSTART;VALUE=DATE:20230503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第5天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:7d136295-95fc-43fd-9f38-2fbfe58d41db -DTSTART;VALUE=DATE:20230506 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:b56814bc-84ec-4277-8a82-5be3b531b2dc -DTSTART;VALUE=DATE:20230622 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:a9cf1f1d-5f77-4d13-8b56-e639bc521588 -DTSTART;VALUE=DATE:20230623 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:9290cee7-3249-4f97-9911-a0811d26c09a -DTSTART;VALUE=DATE:20230624 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c13238d4-f793-48db-af01-db21341d3ad0 -DTSTART;VALUE=DATE:20230625 -SUMMARY:端午节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:037f7334-3f6e-4cdc-bc98-dd9e7eaab090 -DTSTART;VALUE=DATE:20230929 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第1天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:000d3336-fd23-4f3e-b6d2-80da1ebd8ee0 -DTSTART;VALUE=DATE:20230930 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第2天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:9c7574bb-5d87-4a11-ba62-1c7609b39710 -DTSTART;VALUE=DATE:20231001 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第3天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:43b3b3f9-fce7-4e7f-9592-6aa5bd03c1d9 -DTSTART;VALUE=DATE:20231002 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第4天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:f4867a18-5640-4482-8788-2d8a28d203b8 -DTSTART;VALUE=DATE:20231003 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第5天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:91e6f7f8-a469-459a-9e6a-af7363816f4e -DTSTART;VALUE=DATE:20231004 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第6天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:bb004ce6-dd97-47f6-a083-1a05829cf1a6 -DTSTART;VALUE=DATE:20231005 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第7天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:1867aff5-1d7e-48b0-a0ee-55db6493b294 -DTSTART;VALUE=DATE:20231006 -SUMMARY:中秋节、国庆节假期 -DESCRIPTION:假期 第8天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:b1233140-bfa5-4a5f-a107-de2b48e57863 -DTSTART;VALUE=DATE:20231007 -SUMMARY:中秋节、国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:097c4be8-d5d9-423e-aa29-5c91859411fa -DTSTART;VALUE=DATE:20231008 -SUMMARY:中秋节、国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:c439c661-df24-4050-b9d1-8151624acf4c -DTSTART;VALUE=DATE:20231230 -SUMMARY:元旦假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:45fca709-3b40-491d-bf25-19f821fc79ed -DTSTART;VALUE=DATE:20231231 -SUMMARY:元旦假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:4d042654-ee9d-4c56-91a7-8505276c268f -DTSTART;VALUE=DATE:20240101 -SUMMARY:元旦假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:8397570e-80d1-4888-a239-5eff47403f48 -DTSTART;VALUE=DATE:20240204 -SUMMARY:春节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:41a8e49e-a2c9-4697-b3ad-5a10a98dd86f -DTSTART;VALUE=DATE:20240210 -SUMMARY:春节假期 -DESCRIPTION:假期 第1天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:a424ce44-86f4-4f21-b718-798df99a9011 -DTSTART;VALUE=DATE:20240211 -SUMMARY:春节假期 -DESCRIPTION:假期 第2天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:278319dd-c2d4-43a1-9a52-904754e3eaf1 -DTSTART;VALUE=DATE:20240212 -SUMMARY:春节假期 -DESCRIPTION:假期 第3天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:b5ab54d3-6a94-40e1-bece-5c80db07fab5 -DTSTART;VALUE=DATE:20240213 -SUMMARY:春节假期 -DESCRIPTION:假期 第4天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:88769c16-0ae5-4490-b400-723684efe925 -DTSTART;VALUE=DATE:20240214 -SUMMARY:春节假期 -DESCRIPTION:假期 第5天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:4b465690-8fb5-4427-9800-6c532e8ea007 -DTSTART;VALUE=DATE:20240215 -SUMMARY:春节假期 -DESCRIPTION:假期 第6天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:b1efa3ef-e1ec-4af8-8701-94680dcbf6da -DTSTART;VALUE=DATE:20240216 -SUMMARY:春节假期 -DESCRIPTION:假期 第7天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:65fb7ebd-2fcf-47ea-aa0b-ec8c50bc26d0 -DTSTART;VALUE=DATE:20240217 -SUMMARY:春节假期 -DESCRIPTION:假期 第8天/共8天 -END:VEVENT - -BEGIN:VEVENT -UID:030809be-8993-48e3-b27a-671b47b686f5 -DTSTART;VALUE=DATE:20240218 -SUMMARY:春节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:96ad4021-8af5-4358-a4f8-f9e69939f076 -DTSTART;VALUE=DATE:20240404 -SUMMARY:清明节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:440ea795-cbd5-4abe-9f3f-f4f251c6bd10 -DTSTART;VALUE=DATE:20240405 -SUMMARY:清明节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:fd5ab132-1a30-4176-b121-0956050f13bb -DTSTART;VALUE=DATE:20240406 -SUMMARY:清明节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:8f65773e-2243-4a14-8881-64bd2d6c616d -DTSTART;VALUE=DATE:20240407 -SUMMARY:清明节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:0c5f9b3f-f081-4132-81dd-356d56bffed3 -DTSTART;VALUE=DATE:20240428 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:58840c1e-66e4-46ac-be96-c68b859f1cec -DTSTART;VALUE=DATE:20240501 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第1天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:2d4c2536-afed-4556-bb81-9399a61b869f -DTSTART;VALUE=DATE:20240502 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第2天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:76bbd4e6-b3f5-4adb-ad9b-7ac42b6ed98c -DTSTART;VALUE=DATE:20240503 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第3天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:4a52cb7e-23c7-4e3d-a419-785d87d2ae12 -DTSTART;VALUE=DATE:20240504 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第4天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:a8b2556d-7892-4526-bf14-b8bf18dab326 -DTSTART;VALUE=DATE:20240505 -SUMMARY:劳动节假期 -DESCRIPTION:假期 第5天/共5天 -END:VEVENT - -BEGIN:VEVENT -UID:86e71ba8-ac99-4a4d-ab3d-28ffdb97f303 -DTSTART;VALUE=DATE:20240511 -SUMMARY:劳动节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:14e3549b-abbd-441f-a8a8-c6237bd39f20 -DTSTART;VALUE=DATE:20240608 -SUMMARY:端午节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:5cdf203e-2705-49ea-8064-160c87367e14 -DTSTART;VALUE=DATE:20240609 -SUMMARY:端午节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f170bf55-2647-4425-be75-d9e01e327db4 -DTSTART;VALUE=DATE:20240610 -SUMMARY:端午节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:c4065b4f-09a1-4f72-b624-636efe3c623f -DTSTART;VALUE=DATE:20240914 -SUMMARY:中秋节补班 -DESCRIPTION:补班 第1天/共1天 -END:VEVENT - -BEGIN:VEVENT -UID:30b7d7ea-4798-43ec-8850-dbea14bbcdbf -DTSTART;VALUE=DATE:20240915 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第1天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:f6729e49-534b-4145-a6f3-f1221271b022 -DTSTART;VALUE=DATE:20240916 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第2天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:52c161e3-f5e3-4088-9a6b-ed96d2bd3bcf -DTSTART;VALUE=DATE:20240917 -SUMMARY:中秋节假期 -DESCRIPTION:假期 第3天/共3天 -END:VEVENT - -BEGIN:VEVENT -UID:dd50ad22-fd2b-4f63-96ec-b62b8a2b7b73 -DTSTART;VALUE=DATE:20240929 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第1天/共2天 -END:VEVENT - -BEGIN:VEVENT -UID:90c93645-20a1-4015-9d40-abf7d6d726eb -DTSTART;VALUE=DATE:20241001 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第1天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:5003072a-7260-431e-89f5-53387cb0f142 -DTSTART;VALUE=DATE:20241002 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第2天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:ac371058-3e5a-4a8e-ac46-160429cb7775 -DTSTART;VALUE=DATE:20241003 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第3天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:368c54ff-0b96-429b-9bf8-301e20d5e304 -DTSTART;VALUE=DATE:20241004 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第4天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:fa7fc164-8a56-4552-a4ac-c3e05fe042fe -DTSTART;VALUE=DATE:20241005 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第5天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:3744754b-6798-40e9-abec-9192941783b1 -DTSTART;VALUE=DATE:20241006 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第6天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:6022a857-2a8e-4580-bc1a-e6212d6011bd -DTSTART;VALUE=DATE:20241007 -SUMMARY:国庆节假期 -DESCRIPTION:假期 第7天/共7天 -END:VEVENT - -BEGIN:VEVENT -UID:69a32d47-68e2-415f-bebd-f8bc2c5e122a -DTSTART;VALUE=DATE:20241012 -SUMMARY:国庆节补班 -DESCRIPTION:补班 第2天/共2天 -END:VEVENT - - -END:VCALENDAR \ No newline at end of file diff --git a/go.mod b/go.mod deleted file mode 100644 index aa49de2..0000000 --- a/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module main - -go 1.19 - -require ( - github.com/google/uuid v1.3.0 - github.com/samber/lo v1.28.2 -) - -require golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect diff --git a/go.sum b/go.sum deleted file mode 100644 index bf3d086..0000000 --- a/go.sum +++ /dev/null @@ -1,11 +0,0 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/samber/lo v1.28.2 h1:f1gctelJ5YQk336wCN+Elr90FyhZ6ArhelD5kjhNTz4= -github.com/samber/lo v1.28.2/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= -github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= -github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/main.go b/main.go deleted file mode 100644 index da43574..0000000 --- a/main.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "main/parse/app" - "main/parse/core" -) - -func main() { - holidays := app.Data().Read(`^20\d\d`).From("data").Parse().Sort().Get().Print("==== HOLIDAYS ====") - - app.Data(holidays).Write("index.html").To("docs").Title("节假日").Set() - app.Data(holidays).Write("holiday.ics").To("docs").Title("节假日").Set() - - app.Data(holidays.Select(core.Rest)).Write("rest.ics").To("docs").Title("节假日(假期)").Set() - app.Data(holidays.Select(core.Work)).Write("work.ics").To("docs").Title("节假日(补班)").Set() -} diff --git a/parse/app/flow.go b/parse/app/flow.go deleted file mode 100644 index 716dc42..0000000 --- a/parse/app/flow.go +++ /dev/null @@ -1,37 +0,0 @@ -package app - -import "main/parse/core" - -func Data(optional ...core.Holidays) Handler { - return newHandler(optional...) -} - -type Handler interface { - Read(filename string) setDirIn - Write(filename string) setDirOut -} - -type setDirIn interface { - From(directory string) readData -} - -type readData interface { - Parse() getData -} - -type getData interface { - Sort() getData - Get() core.Holidays -} - -type setDirOut interface { - To(directory string) setTitle -} - -type setTitle interface { - Title(name string) writeData -} - -type writeData interface { - Set() -} diff --git a/parse/app/utils.go b/parse/app/utils.go deleted file mode 100644 index 9e7e3c9..0000000 --- a/parse/app/utils.go +++ /dev/null @@ -1,74 +0,0 @@ -package app - -import ( - "sort" - - "main/parse/core" - "main/parse/data" - "main/parse/data/input" - "main/parse/data/output" - "main/parse/data/read" - "main/parse/data/write" -) - -func newHandler(optionalData ...core.Holidays) Handler { - if len(optionalData) == 0 { - return handler{} - } - return handler{data: optionalData[0]} -} - -type handler struct { - data core.Holidays - - reader data.Reader - writer data.Writer - filename string - - input data.Input - output data.Output -} - -func (h handler) Read(filename string) setDirIn { - h.filename = filename - return h -} - -func (h handler) From(directory string) readData { - h.reader = read.NewReader(directory, h.filename) - return h -} - -func (h handler) Parse() getData { - h.input = h.reader.Read() - h.data = input.NewParser().Parse(h.input) - return h -} - -func (h handler) Sort() getData { - sort.Sort(h.data) - return h -} - -func (h handler) Write(filename string) setDirOut { - h.filename = filename - return h -} - -func (h handler) To(directory string) setTitle { - h.writer = write.NewWriter(directory, h.filename) - return h -} - -func (h handler) Title(name string) writeData { - h.output = output.NewFormatter(name).Format(h.data) - return h -} - -func (h handler) Get() core.Holidays { - return h.data -} - -func (h handler) Set() { - h.writer.Write(h.output) -} diff --git a/parse/core/base.go b/parse/core/base.go deleted file mode 100644 index 5ee3594..0000000 --- a/parse/core/base.go +++ /dev/null @@ -1,42 +0,0 @@ -package core - -import ( - "log" - "time" - - "github.com/samber/lo" -) - -type Status string - -const ( - Rest Status = "rest" // 假日 - Work Status = "work" // 补班 -) - -// Holidays data -type Holidays []Holiday - -// Holiday data per day -type Holiday struct { - Group string - Date time.Time - Name string - Type Status - Nth int - Total int -} - -func (h Holidays) Select(t Status) Holidays { - return lo.Filter(h, func(d Holiday, _ int) bool { return d.Type == t }) -} - -func (h Holidays) Print(titles ...string) Holidays { - lo.ForEach(titles, func(title string, _ int) { log.Println(title) }) - lo.ForEach(h, func(day Holiday, _ int) { log.Printf("%+v\n", day) }) - return h -} - -func (h Holidays) Len() int { return len(h) } -func (h Holidays) Less(i, j int) bool { return h[i].Date.Before(h[j].Date) } -func (h Holidays) Swap(i, j int) { h[i], h[j] = h[j], h[i] } diff --git a/parse/data/input/parse.go b/parse/data/input/parse.go deleted file mode 100644 index e8f5d50..0000000 --- a/parse/data/input/parse.go +++ /dev/null @@ -1,63 +0,0 @@ -package input - -import ( - "fmt" - "strings" - - "main/parse/core" - "main/parse/data" -) - -func NewParser() data.Parser { - return parser{} -} - -type parser struct{} - -func (p parser) Parse(raw data.Input) (result core.Holidays) { - for _, year := range raw { - days, _ := parse(year) - result = append(result, days...) - } - return -} - -func parse(raw data.InputRaw) (result core.Holidays, err error) { - dayCount := make(map[string]map[core.Status]int) - - for group, holiday := range raw.Data { - groupName := fmt.Sprintf("%04d%02d", raw.Year, group+1) - dayCount[groupName] = make(map[core.Status]int) - info := strings.Split(holiday, ";") - - for i, day := range holidays(raw.Year, info[1]) { - restDay := core.Holiday{ - Group: groupName, - Name: info[0], - Nth: i + 1, - Date: day, - Type: core.Rest, - } - result = append(result, restDay) - dayCount[restDay.Group][restDay.Type]++ - } - - for i, day := range holidays(raw.Year, info[2]) { - workDay := core.Holiday{ - Group: groupName, - Name: info[0], - Nth: i + 1, - Date: day, - Type: core.Work, - } - result = append(result, workDay) - dayCount[workDay.Group][workDay.Type]++ - } - } - - for i, holiday := range result { - result[i].Total = dayCount[holiday.Group][holiday.Type] - } - - return -} diff --git a/parse/data/input/utils.go b/parse/data/input/utils.go deleted file mode 100644 index 3f2663d..0000000 --- a/parse/data/input/utils.go +++ /dev/null @@ -1,39 +0,0 @@ -package input - -import ( - "fmt" - "strconv" - "strings" - "time" -) - -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, days string) (result []time.Time) { - if days == "" { - return - } - - for _, day := range strings.Split(days, ",") { - if strings.Contains(day, "-") { - period := strings.Split(day, "-") - d := date(year, period[0]) - for !d.After(date(year, period[1])) { - result = append(result, d) - d = d.AddDate(0, 0, 1) - } - } else { - result = append(result, date(year, day)) - } - } - return result -} diff --git a/parse/data/input/utils_test.go b/parse/data/input/utils_test.go deleted file mode 100644 index 834433e..0000000 --- a/parse/data/input/utils_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package input - -import ( - "reflect" - "testing" - "time" -) - -func Test_date(t *testing.T) { - type args struct { - year int - date string - } - tests := []struct { - name string - args args - wantResult time.Time - }{ - {"1", args{2001, "1.1"}, time.Date(2001, 1, 1, 0, 0, 0, 0, time.UTC)}, - {"2", args{2002, "1.11"}, time.Date(2002, 1, 11, 0, 0, 0, 0, time.UTC)}, - {"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) { - if gotResult := date(tt.args.year, tt.args.date); !reflect.DeepEqual(gotResult, tt.wantResult) { - t.Errorf("date() = %v, want %v", gotResult, tt.wantResult) - } - }) - } -} - -func Test_holidays(t *testing.T) { - type args struct { - year int - daysRaw string - } - tests := []struct { - name string - args args - wantResult []string - }{ - {"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) { - 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]) - } - } - }) - } -} diff --git a/parse/data/io.go b/parse/data/io.go deleted file mode 100644 index 3efea3e..0000000 --- a/parse/data/io.go +++ /dev/null @@ -1,34 +0,0 @@ -package data - -import "main/parse/core" - -type Reader interface { - Read() Input -} - -type Parser interface { - Parse(Input) core.Holidays -} - -type Formatter interface { - Format(core.Holidays) Output -} - -type Writer interface { - Write(Output) -} - -// Input data -type Input []InputRaw - -// InputRaw per year -type InputRaw struct { - Year int - Data []string -} - -type Output struct { - Prefix string - Body []string - Suffix string -} diff --git a/parse/data/output/format.go b/parse/data/output/format.go deleted file mode 100644 index f4fa0b5..0000000 --- a/parse/data/output/format.go +++ /dev/null @@ -1,40 +0,0 @@ -package output - -import ( - "fmt" - "hash/crc32" - "math/rand" - - "github.com/google/uuid" - "github.com/samber/lo" - - "main/parse/core" - "main/parse/data" -) - -func NewFormatter(name string) data.Formatter { - return formatter{name} -} - -type formatter struct { - name string -} - -func (f formatter) Format(info core.Holidays) (result data.Output) { - result.Prefix = fmt.Sprintf(icsHead, f.name) - result.Suffix = icsTail - - uuid.SetRand(rand.New(rand.NewSource(int64(crc32.ChecksumIEEE([]byte(f.name)))))) - - result.Body = lo.Map(info, func(day core.Holiday, i int) string { - return event{ - id: uuid.NewString(), - group: day.Group, - title: getTitle(day), - date: day.Date, - desc: getDesc(day), - }.Ics() - }) - - return -} diff --git a/parse/data/output/utils.go b/parse/data/output/utils.go deleted file mode 100644 index ec81192..0000000 --- a/parse/data/output/utils.go +++ /dev/null @@ -1,49 +0,0 @@ -package output - -import ( - "fmt" - "time" - - "main/parse/core" -) - -const ( - icsHead = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Rank Technology//Chinese Holidays//EN\nX-WR-CALNAME:%s" - icsEvent = "BEGIN:VEVENT\nUID:%s\nDTSTART;VALUE=DATE:%s\nSUMMARY:%s\nDESCRIPTION:%s\nEND:VEVENT" - icsTail = "END:VCALENDAR" -) - -// event data -type event struct { - id string - group string - title string - date time.Time - desc string -} - -func (d event) Ics() string { - return fmt.Sprintf( - icsEvent, - d.id, - d.date.Format("20060102"), - d.title, - d.desc, - ) -} - -func getStatusName(status core.Status) string { - name := map[core.Status]string{ - core.Rest: "假期", - core.Work: "补班", - } - return name[status] -} - -func getTitle(item core.Holiday) string { - return fmt.Sprintf("%s%s", item.Name, getStatusName(item.Type)) -} - -func getDesc(item core.Holiday) string { - return fmt.Sprintf("%s 第%d天/共%d天", getStatusName(item.Type), item.Nth, item.Total) -} diff --git a/parse/data/read/read.go b/parse/data/read/read.go deleted file mode 100644 index bb75929..0000000 --- a/parse/data/read/read.go +++ /dev/null @@ -1,116 +0,0 @@ -package read - -import ( - "fmt" - "log" - "os" - "regexp" - "strconv" - "strings" - "sync" - - "github.com/samber/lo" - - "main/parse/data" -) - -func NewReader(dir, file string) data.Reader { - return dataReader{Dir: "./" + dir + "/", File: file} -} - -type dataReader struct { - Dir string - File string -} - -type fileInfo struct { - Name string - Year int -} - -func (dw dataReader) Read() (result data.Input) { - resultChan := make(chan data.InputRaw) - wg := new(sync.WaitGroup) - - for _, f := range dw.fileList() { - wg.Add(1) - - go func(file fileInfo) { - defer wg.Done() - raw, err := dw.load(file.Name) - if err != nil { - log.Printf("Error loading %s: %s\n", file.Name, err) - return - } - - res := data.InputRaw{ - Year: file.Year, - Data: lines(raw), - } - if len(res.Data) == 0 { - log.Printf("No data in %s\n", file.Name) - return - } - - resultChan <- res - }(f) - } - - go func() { - wg.Wait() - close(resultChan) - }() - - for content := range resultChan { - result = append(result, content) - } - return result -} - -func (dw dataReader) fileList() (result []fileInfo) { - files, err := os.ReadDir(dw.Dir) - if err != nil { - log.Fatal(err) - } - - return lo.FilterMap(files, func(file os.DirEntry, _ int) (fileInfo, bool) { - yr, e := year(file.Name(), dw.File) - isFile := e == nil && !file.IsDir() - return fileInfo{Name: file.Name(), Year: yr}, isFile - }) -} - -func (dw dataReader) load(filename string) (result string, err error) { - content, err := os.ReadFile(dw.Dir + filename) - if err != nil { - return result, err - } - return string(content), nil -} - -func year(filename, format string) (result int, err error) { - regex := regexp.MustCompile(format) - if !regex.MatchString(filename) { - return 0, fmt.Errorf("%s is not a valid filename", filename) - } - return strconv.Atoi(filename[:4]) -} - -func lines(data string) (result []string) { - var ( - dateSingle = `(\d?\d.\d?\d)` - dateRange = fmt.Sprintf(`(%s-%s)`, dateSingle, dateSingle) - dateFormat = fmt.Sprintf(`(%s|%s)`, dateSingle, dateRange) - dateInputs = fmt.Sprintf(`(%s,)*%s`, dateFormat, dateFormat) - dateAccept = fmt.Sprintf(`(|%s)`, dateInputs) - dateRegex = regexp.MustCompile(fmt.Sprintf(`^[^;]+;%s;%s$`, dateAccept, dateAccept)) - ) - - return lo.FilterMap(strings.Split(data, "\n"), - func(line string, _ int) (string, bool) { - line = strings.Split(line, "//")[0] - line = strings.TrimSpace(line) - return line, dateRegex.MatchString(line) - }, - ) -} diff --git a/parse/data/read/read_test.go b/parse/data/read/read_test.go deleted file mode 100644 index 8041279..0000000 --- a/parse/data/read/read_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package read - -import ( - "fmt" - "reflect" - "testing" -) - -func Test_year(t *testing.T) { - type args struct { - filename string - } - tests := []struct { - name string - args args - wantResult int - wantErr error - }{ - {"2018", args{"2018.txt"}, 2018, nil}, - {"2019", args{"2019.avi"}, 0, fmt.Errorf("%s", "invalid year")}, - {"2020", args{"zero.txt"}, 0, fmt.Errorf("%s", "invalid year")}, - {"2021", args{"2021.txt"}, 2021, nil}, - {"2022", args{"2022.txt"}, 2022, nil}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - gotResult, err := year(tt.args.filename, `^\d{4}\.txt$`) - if err == nil && err != tt.wantErr || err != nil && tt.wantErr == nil { - t.Errorf("year() error = %v, wantErr %v", err, tt.wantErr) - return - } - if gotResult != tt.wantResult { - t.Errorf("year() gotResult = %v, want %v", gotResult, tt.wantResult) - } - }) - } -} - -func Test_lines(t *testing.T) { - type args struct { - data string - } - tests := []struct { - name string - args args - wantResult []string - }{ - {"1", args{"// none"}, []string{}}, - {"2", args{";1.1;2.2"}, []string{}}, - {"3", args{"3;1.1;2.2"}, []string{"3;1.1;2.2"}}, - {"4", args{"4;1.1;"}, []string{"4;1.1;"}}, - {"5", args{"5;1.1;2.2,3.3"}, []string{"5;1.1;2.2,3.3"}}, - {"6", args{"6;1.1,2.2;3.3,4.4"}, []string{"6;1.1,2.2;3.3,4.4"}}, - {"7", args{"7;1.1,2.2;3.3,4.4-5.5"}, []string{"7;1.1,2.2;3.3,4.4-5.5"}}, - {"8", args{"8;1.1;2.2;"}, []string{}}, - {"9", args{"9;,1.1;2.2"}, []string{}}, - {"10", args{"10;1.1"}, []string{}}, - {"11", args{"11;1.1;2.2,"}, []string{}}, - {"12", args{"// 13;1.1;2.2 "}, []string{}}, - {"13", args{"13;1.1;2.2 // none"}, []string{"13;1.1;2.2"}}, - {"14", args{"14;1.1;2.2 "}, []string{"14;1.1;2.2"}}, - {"15", args{" 15;1.1;2.2"}, []string{"15;1.1;2.2"}}, - {"16", args{" 16;1.1;2.2 "}, []string{"16;1.1;2.2"}}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if gotResult := lines(tt.args.data); !reflect.DeepEqual(gotResult, tt.wantResult) { - t.Errorf("lines() = %v, want %v", gotResult, tt.wantResult) - } - }) - } -} diff --git a/parse/data/write/write.go b/parse/data/write/write.go deleted file mode 100644 index 8c755c3..0000000 --- a/parse/data/write/write.go +++ /dev/null @@ -1,41 +0,0 @@ -package write - -import ( - "log" - "os" - "strings" - - "main/parse/data" -) - -func NewWriter(dir, file string) data.Writer { - return dataWriter{File: "./" + dir + "/" + file} -} - -type dataWriter struct { - File string -} - -func (dw dataWriter) Write(data data.Output) { - output := strings.Join( - []string{ - data.Prefix, - strings.Join(data.Body, "\n\n"), - data.Suffix, - }, - "\n\n\n", - ) - - f, err := os.Create(dw.File) - if err != nil { - log.Fatal(err) - } - defer func() { _ = f.Close() }() - - n, err := f.WriteString(output) - if err != nil { - log.Fatal(err) - } - - log.Println("write", n, "bytes to", dw.File) -} diff --git a/parser.cabal b/parser.cabal index 1ea68dc..d15f57b 100644 --- a/parser.cabal +++ b/parser.cabal @@ -24,7 +24,7 @@ description: Calendar of Public Holidays in China -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change -version: 0.1.1.0 +version: 0.1.2.0 -- A short (one-line) description of the package. -- synopsis: diff --git a/parser/Main/Input.hs b/parser/Main/Input.hs index fef2a5f..b66cc42 100644 --- a/parser/Main/Input.hs +++ b/parser/Main/Input.hs @@ -16,12 +16,12 @@ parseByFile :: (FilePath, String) -> (String, [Date], [Date]) parseByFile (file, content) = (year, rest, work) where year = takeBaseName file - rest = parse year content Rest - work = parse year content Work + rest = parse content Rest + work = parse content Work -- Convert data to Date -parse :: String -> String -> DateType -> [Date] -parse year content flag = concatMap constructor $ zip (map head raw) dates +parse :: String -> DateType -> [Date] +parse content flag = concatMap constructor $ zip (map head raw) dates where constructor (name, dates) = constructDate name flag <$> dates dates = parseDate <$> map (!! indexDateType flag) raw