├── docs
├── CNAME
├── readme
│ ├── demo.png
│ ├── ios.jpg
│ ├── macos.png
│ └── overview.png
├── work.ics
└── rest.ics
├── .github
├── trigger.json
└── workflows
│ ├── cd.yml
│ └── ci.yml
├── data
├── readme.txt
├── 2017.txt
├── 2020.txt
├── 2023.txt
├── 2025.txt
├── 2015.txt
├── 2014.txt
├── 2019.txt
├── 2016.txt
├── 2018.txt
├── 2021.txt
├── 2022.txt
├── 2024.txt
├── 2026.txt
└── 2013.txt
├── pyproject.toml
├── holiday_llm.prompt
├── .editorconfig
├── crawler.http
├── parser
├── Main.hs
├── Main
│ ├── Output.hs
│ ├── Input.hs
│ └── Base.hs
└── Test.hs
├── README.md
├── holiday_llm.py
├── .gitignore
├── parser.cabal
├── crawler.py
└── LICENSE
/docs/CNAME:
--------------------------------------------------------------------------------
1 | ical.muhan.org
--------------------------------------------------------------------------------
/.github/trigger.json:
--------------------------------------------------------------------------------
1 | {
2 | "trigger": 0
3 | }
4 |
--------------------------------------------------------------------------------
/docs/readme/demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/muhac/chinese-holidays-calendar/HEAD/docs/readme/demo.png
--------------------------------------------------------------------------------
/docs/readme/ios.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/muhac/chinese-holidays-calendar/HEAD/docs/readme/ios.jpg
--------------------------------------------------------------------------------
/docs/readme/macos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/muhac/chinese-holidays-calendar/HEAD/docs/readme/macos.png
--------------------------------------------------------------------------------
/docs/readme/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/muhac/chinese-holidays-calendar/HEAD/docs/readme/overview.png
--------------------------------------------------------------------------------
/data/readme.txt:
--------------------------------------------------------------------------------
1 | 文件格式
2 | 年份开头,形如 2022.txt
3 |
4 | 数据格式
5 | 节日名;放假日期
6 | 节日名;放假日期;补班日期
7 |
8 | 日期格式
9 | Y.M.D,Y.M.D-Y.M.D
10 | 支持多选 “,” 和区间 “-”
11 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [project]
2 | name = "chinese-holidays-calendar"
3 | version = "0.0.0"
4 | description = "Chinese holidays calendar crawler and parser"
5 | readme = "README.md"
6 | requires-python = ">=3.11"
7 | dependencies = [
8 | "langsmith~=0.4.23",
9 | "openai~=1.105.0",
10 | "python-dateutil~=2.9.0.post0",
11 | "requests~=2.32.5",
12 | ]
13 |
14 | [dependency-groups]
15 | dev = [
16 | "pylint>=3.0.0"
17 | ]
18 |
--------------------------------------------------------------------------------
/holiday_llm.prompt:
--------------------------------------------------------------------------------
1 | 你将收到一个中国节假日的放假安排, 它包含了节日名, 放假日期和调休日期.
2 |
3 | 数据格式为: 节日名;放假日期;补班日期
4 | 如果没有补班, 可以省略为: 节日名;放假日期
5 |
6 | 其中, 日期格式形如 Y.M.D,Y.M.D-Y.M.D
7 | 用“,”拼接多个日期, 并使用“-”表示日期区间
8 |
9 | 例如:
10 |
11 | 输入
12 | 2013年春节: 2月9日至15日放假调休,共7天。2月16日(星期六)、2月17日(星期日)上班。
13 | 输出
14 | 春节;2013.2.9-2013.2.15;2013.2.16,2013.2.17
15 |
16 | 输入
17 | 2023年元旦: 2022年12月31日至2023年1月2日放假调休,共3天。
18 | 输出
19 | 元旦;2022.12.31-2023.1.2
20 |
21 | 输入
22 | 2025年国庆节、中秋节: 10月1日(周三)至8日(周三)放假调休,共8天。9月28日(周日)、10月11日(周六)上班。
23 | 输出
24 | 国庆节、中秋节;2025.10.1-2025.10.8;2025.9.28,2025.10.11
25 |
26 | 根据上面的例子完成下面这个数据的处理. 你应该仅输出最终结果, 必须只有一行, 格式和上面一致.
27 |
28 | 输入
29 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # top-most EditorConfig file
2 | root = true
3 |
4 | [*]
5 | end_of_line = lf
6 | insert_final_newline = true
7 |
8 | # Matches multiple files with brace expansion notation
9 | [{*.go,go.mod,go.sum}]
10 | charset = utf-8
11 | indent_style = tab
12 | indent_size = 4
13 | trim_trailing_whitespace = true
14 |
15 | [*.py]
16 | charset = utf-8
17 | indent_style = space
18 | indent_size = 4
19 | trim_trailing_whitespace = true
20 |
21 | [*.{js,html,css,json,yml}]
22 | charset = utf-8
23 | indent_style = space
24 | indent_size = 2
25 | trim_trailing_whitespace = true
26 |
27 | [*.{md,txt}]
28 | trim_trailing_whitespace = false
29 |
--------------------------------------------------------------------------------
/data/2017.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 4/10/2022
2 | // and manually checked on 4/11/2022
3 | // source: http://www.gov.cn/zhengce/content/2016-12/01/content_5141603.htm
4 |
5 | 元旦;2016.12.31-2017.1.2; // 1月1日放假,1月2日(星期一)补休。
6 | 春节;2017.1.27-2017.2.2;2017.1.22,2017.2.4 // 1月27日至2月2日放假调休,共7天。1月22日(星期日)、2月4日(星期六)上班。
7 | 清明节;2017.4.2-2017.4.4;2017.4.1 // 4月2日至4日放假调休,共3天。4月1日(星期六)上班。
8 | 劳动节;2017.4.29-2017.5.1; // 5月1日放假,与周末连休。
9 | 端午节;2017.5.28-2017.5.30;2017.5.27 // 5月28日至30日放假调休,共3天。5月27日(星期六)上班。
10 | 中秋节、国庆节;2017.10.1-2017.10.8;2017.9.30 // 10月1日至8日放假调休,共8天。9月30日(星期六)上班。
11 |
--------------------------------------------------------------------------------
/data/2020.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 3/27/2022
2 | // and manually checked on 3/27/2022
3 | // source: http://www.gov.cn/zhengce/content/2019-11/21/content_5454164.htm
4 |
5 | 元旦;2020.1.1; // 2020年1月1日放假,共1天。
6 | 春节;2020.1.24-2020.1.30;2020.1.19,2020.2.1 // 1月24日至30日放假调休,共7天。1月19日(星期日)、2月1日(星期六)上班。
7 | 清明节;2020.4.4-2020.4.6; // 4月4日至6日放假调休,共3天。
8 | 劳动节;2020.5.1-2020.5.5;2020.4.26,2020.5.9 // 5月1日至5日放假调休,共5天。4月26日(星期日)、5月9日(星期六)上班。
9 | 端午节;2020.6.25-2020.6.27;2020.6.28 // 6月25日至27日放假调休,共3天。6月28日(星期日)上班。
10 | 国庆节、中秋节;2020.10.1-2020.10.8;2020.9.27,2020.10.10 // 10月1日至8日放假调休,共8天。9月27日(星期日)、10月10日(星期六)上班。
11 |
--------------------------------------------------------------------------------
/data/2023.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 12/11/2022
2 | // and manually checked on 12/27/2022
3 | // source: http://www.gov.cn/zhengce/content/2022-12/08/content_5730844.htm
4 |
5 | 元旦;2022.12.31-2023.1.2; // 2022年12月31日至2023年1月2日放假调休,共3天。
6 | 春节;2023.1.21-2023.1.27;2023.1.28,2023.1.29 // 1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。
7 | 清明节;2023.4.5; // 4月5日放假,共1天。
8 | 劳动节;2023.4.29-2023.5.3;2023.4.23,2023.5.6 // 4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。
9 | 端午节;2023.6.22-2023.6.24;2023.6.25 // 6月22日至24日放假调休,共3天。6月25日(星期日)上班。
10 | 中秋节、国庆节;2023.9.29-2023.10.6;2023.10.7,2023.10.8 // 9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。
11 |
--------------------------------------------------------------------------------
/data/2025.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 9/3/2025
2 | // and manually checked on // BY AI
3 | // source: https://www.gov.cn/zhengce/content/202411/content_6986382.htm
4 |
5 | 元旦;2025.1.1 // 1月1日(周三)放假1天,不调休。
6 | 春节;2025.1.28-2025.2.4;2025.1.26,2025.2.8 // 1月28日(农历除夕、周二)至2月4日(农历正月初七、周二)放假调休,共8天。1月26日(周日)、2月8日(周六)上班。
7 | 清明节;2025.4.4-2025.4.6 // 4月4日(周五)至6日(周日)放假,共3天。
8 | 劳动节;2025.5.1-2025.5.5;2025.4.27 // 5月1日(周四)至5日(周一)放假调休,共5天。4月27日(周日)上班。
9 | 端午节;2025.5.31-2025.6.2 // 5月31日(周六)至6月2日(周一)放假,共3天。
10 | 国庆节、中秋节;2025.10.1-2025.10.8;2025.9.28,2025.10.11 // 10月1日(周三)至8日(周三)放假调休,共8天。9月28日(周日)、10月11日(周六)上班。
--------------------------------------------------------------------------------
/data/2015.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 4/10/2022
2 | // and manually checked on 4/11/2022
3 | // source: http://www.gov.cn/zhengce/content/2014-12/16/content_9302.htm
4 |
5 | 元旦;2015.1.1-2015.1.3;2015.1.4 // 1月1日至3日放假调休,共3天。1月4日(星期日)上班。
6 | 春节;2015.2.18-2015.2.24;2015.2.15,2015.2.28 // 2月18日至24日放假调休,共7天。2月15日(星期日)、2月28日(星期六)上班。
7 | 清明节;2015.4.4-2015.4.6; // 4月5日放假,4月6日(星期一)补休。
8 | 劳动节;2015.5.1-2015.5.3; // 5月1日放假,与周末连休。
9 | 端午节;2015.6.20-2015.6.22; // 6月20日放假,6月22日(星期一)补休。
10 | 中秋节;2015.9.27; // 9月27日放假。
11 | 国庆节;2015.10.1-2015.10.7;2015.10.10 // 10月1日至7日放假调休,共7天。10月10日(星期六)上班。
12 |
--------------------------------------------------------------------------------
/data/2014.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 4/10/2022
2 | // and manually checked on 4/11/2022
3 | // source: http://www.gov.cn/zhengce/content/2014-01/02/content_1194.htm
4 |
5 | 元旦;2014.1.1; // 1月1日放假1天。
6 | 春节;2014.1.31-2014.2.6;2014.1.26,2014.2.8 // 1月31日至2月6日放假调休,共7天。1月26日(星期日)、2月8日(星期六)上班。
7 | 清明节;2014.4.5-2014.4.7; // 4月5日放假,4月7日(星期一)补休。
8 | 劳动节;2014.5.1-2014.5.3;2014.5.4 // 5月1日至3日放假调休,共3天。5月4日(星期日)上班。
9 | 端午节;2014.5.31-2014.6.2; // 6月2日放假,与周末连休。
10 | 中秋节;2014.9.6-2014.9.8; // 9月8日放假,与周末连休。
11 | 国庆节;2014.10.1-2014.10.7;2014.9.28,2014.10.11 // 10月1日至7日放假调休,共7天。9月28日(星期日)、10月11日(星期六)上班。
12 |
--------------------------------------------------------------------------------
/data/2019.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 3/27/2022
2 | // and manually checked on 3/27/2022
3 | // source: http://www.gov.cn/zhengce/content/2018-12/06/content_5346276.htm
4 |
5 | 元旦;2018.12.30-2019.1.1;2018.12.19 // 2018年12月30日至2019年1月1日放假调休,共3天。2018年12月29日(星期六)上班。
6 | 春节;2019.2.4-2019.2.10;2019.2.2,2019.2.3 // 2月4日至10日放假调休,共7天。2月2日(星期六)、2月3日(星期日)上班。
7 | 清明节;2019.4.5-2019.4.7; // 4月5日放假,与周末连休。
8 | 劳动节;2019.5.1; // 5月1日放假。
9 | 端午节;2019.6.7-2019.6.9; // 6月7日放假,与周末连休。
10 | 中秋节;2019.9.13-2019.9.15; // 9月13日放假,与周末连休。
11 | 国庆节;2019.10.1-2019.10.7;2019.9.29,2019.10.12 // 10月1日至7日放假调休,共7天。9月29日(星期日)、10月12日(星期六)上班。
12 |
--------------------------------------------------------------------------------
/data/2016.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 4/10/2022
2 | // and manually checked on 4/11/2022
3 | // source: http://www.gov.cn/zhengce/content/2015-12/10/content_10394.htm
4 |
5 | 元旦;2016.1.1-2016.1.3; // 1月1日放假,与周末连休。
6 | 春节;2016.2.7-2016.2.13;2016.2.6,2016.2.14 // 2月7日至13日放假调休,共7天。2月6日(星期六)、2月14日(星期日)上班。
7 | 清明节;2016.4.2-2016.4.4; // 4月4日放假,与周末连休。
8 | 劳动节;2016.4.30-2016.5.2; // 5月1日放假,5月2日(星期一)补休。
9 | 端午节;2016.6.9-2016.6.11;2016.6.12 // 6月9日至11日放假调休,共3天。6月12日(星期日)上班。
10 | 中秋节;2016.9.15-2016.9.17;2016.9.18 // 9月15日至17日放假调休,共3天。9月18日(星期日)上班。
11 | 国庆节;2016.10.1-2016.10.7;2016.10.8,2016.10.9 // 10月1日至7日放假调休,共7天。10月8日(星期六)、10月9日(星期日)上班。
12 |
--------------------------------------------------------------------------------
/data/2018.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 3/27/2022
2 | // and manually checked on 3/27/2022
3 | // source: http://www.gov.cn/zhengce/content/2017-11/30/content_5243579.htm
4 |
5 | 元旦;2017.12.30-2018.1.1; // 1月1日放假,与周末连休。
6 | 春节;2018.2.15-2018.2.21;2018.2.11,2018.2.24 // 2月15日至21日放假调休,共7天。2月11日(星期日)、2月24日(星期六)上班。
7 | 清明节;2018.4.5-2018.4.7;2018.4.8 // 4月5日至7日放假调休,共3天。4月8日(星期日)上班。
8 | 劳动节;2018.4.29-2018.5.1;2018.4.28 // 4月29日至5月1日放假调休,共3天。4月28日(星期六)上班。
9 | 端午节;2018.6.16-2018.6.18; // 6月18日放假,与周末连休。
10 | 中秋节;2018.9.22-2018.9.24; // 9月24日放假,与周末连休。
11 | 国庆节;2018.10.1-2018.10.7;2018.9.29,2018.9.30 // 10月1日至7日放假调休,共7天。9月29日(星期六)、9月30日(星期日)上班。
12 |
--------------------------------------------------------------------------------
/data/2021.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 3/27/2022
2 | // and manually checked on 3/27/2022
3 | // source: http://www.gov.cn/zhengce/content/2020-11/25/content_5564127.htm
4 |
5 | 元旦;2021.1.1-2021.1.3; // 2021年1月1日至3日放假,共3天。
6 | 春节;2021.2.11-2021.2.17;2021.2.7,2021.2.20 // 2月11日至17日放假调休,共7天。2月7日(星期日)、2月20日(星期六)上班。
7 | 清明节;2021.4.3-2021.4.5; // 4月3日至5日放假调休,共3天。
8 | 劳动节;2021.5.1-2021.5.5;2021.4.25,2021.5.8 // 5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。
9 | 端午节;2021.6.12-2021.6.14; // 6月12日至14日放假,共3天。
10 | 中秋节;2021.9.19-2021.9.21;2021.9.18 // 9月19日至21日放假调休,共3天。9月18日(星期六)上班。
11 | 国庆节;2021.10.1-2021.10.7;2021.9.26,2021.10.9 // 10月1日至7日放假调休,共7天。9月26日(星期日)、10月9日(星期六)上班。
12 |
--------------------------------------------------------------------------------
/data/2022.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 3/27/2022
2 | // and manually checked on 3/27/2022
3 | // source: http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm
4 |
5 | 元旦;2022.1.1-2022.1.3; // 2022年1月1日至3日放假,共3天。
6 | 春节;2022.1.31-2022.2.6;2022.1.29,2022.1.30 // 1月31日至2月6日放假调休,共7天。1月29日(星期六)、1月30日(星期日)上班。
7 | 清明节;2022.4.3-2022.4.5;2022.4.2 // 4月3日至5日放假调休,共3天。4月2日(星期六)上班。
8 | 劳动节;2022.4.30-2022.5.4;2022.4.24,2022.5.7 // 4月30日至5月4日放假调休,共5天。4月24日(星期日)、5月7日(星期六)上班。
9 | 端午节;2022.6.3-2022.6.5; // 6月3日至5日放假,共3天。
10 | 中秋节;2022.9.10-2022.9.12; // 9月10日至12日放假,共3天。
11 | 国庆节;2022.10.1-2022.10.7;2022.10.8,2022.10.9 // 10月1日至7日放假调休,共7天。10月8日(星期六)、10月9日(星期日)上班。
12 |
--------------------------------------------------------------------------------
/data/2024.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 11/5/2023
2 | // and manually checked on 11/5/2023
3 | // source: https://www.gov.cn/zhengce/content/202310/content_6911527.htm
4 |
5 | 元旦;2023.12.30-2024.1.1 // 1月1日放假,与周末连休。
6 | 春节;2024.2.10-2024.2.17;2024.2.4,2024.2.18 // 2月10日至17日放假调休,共8天。2月4日(星期日)、2月18日(星期日)上班。鼓励各单位结合带薪年休假等制度落实,安排职工在除夕(2月9日)休息。
7 | 清明节;2024.4.4-2024.4.6;2024.4.7 // 4月4日至6日放假调休,共3天。4月7日(星期日)上班。
8 | 劳动节;2024.5.1-2024.5.5;2024.4.28,2024.5.11 // 5月1日至5日放假调休,共5天。4月28日(星期日)、5月11日(星期六)上班。
9 | 端午节;2024.6.8-2024.6.10 // 6月10日放假,与周末连休。
10 | 中秋节;2024.9.15-2024.9.17;2024.9.14 // 9月15日至17日放假调休,共3天。9月14日(星期六)上班。
11 | 国庆节;2024.10.1-2024.10.7;2024.9.29,2024.10.12 // 10月1日至7日放假调休,共7天。9月29日(星期日)、10月12日(星期六)上班。
12 |
--------------------------------------------------------------------------------
/data/2026.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 11/17/2025
2 | // and manually checked on // BY AI
3 | // source: https://www.gov.cn/zhengce/content/202511/content_7047090.htm
4 |
5 | 元旦;2026.1.1-2026.1.3;2026.1.4 // 1月1日(周四)至3日(周六)放假调休,共3天。1月4日(周日)上班。
6 | 春节;2026.2.15-2026.2.23;2026.2.14,2026.2.28 // 2月15日(农历腊月二十八、周日)至23日(农历正月初七、周一)放假调休,共9天。2月14日(周六)、2月28日(周六)上班。
7 | 清明节;2026.4.4-2026.4.6 // 4月4日(周六)至6日(周一)放假,共3天。
8 | 劳动节;2026.5.1-2026.5.5;2026.5.9 // 5月1日(周五)至5日(周二)放假调休,共5天。5月9日(周六)上班。
9 | 端午节;2026.6.19-2026.6.21 // 6月19日(周五)至21日(周日)放假,共3天。
10 | 中秋节;2026.9.25-2026.9.27 // 9月25日(周五)至27日(周日)放假,共3天。
11 | 国庆节;2026.10.1-2026.10.7;2026.9.20,2026.10.10 // 10月1日(周四)至7日(周三)放假调休,共7天。9月20日(周日)、10月10日(周六)上班。
--------------------------------------------------------------------------------
/data/2013.txt:
--------------------------------------------------------------------------------
1 | // automatically generated on 4/10/2022
2 | // and manually checked on 4/11/2022
3 | // source: http://www.gov.cn/zhengce/content/2012-12/10/content_1353.htm
4 |
5 | 元旦;2013.1.1-2013.1.3;2013.1.5,2013.1.6 // 1月1日至3日放假调休,共3天。1月5日(星期六)、1月6日(星期日)上班。
6 | 春节;2013.2.9-2013.2.15;2013.2.16,2013.2.17 // 2月9日至15日放假调休,共7天。2月16日(星期六)、2月17日(星期日)上班。
7 | 清明节;2013.4.4-2013.4.6;2013.4.7 // 4月4日至6日放假调休,共3天。4月7日(星期日)上班。
8 | 劳动节;2013.4.29-2013.5.1;2013.4.27,2013.4.28 // 4月29日至5月1日放假调休,共3天。4月27日(星期六)、4月28日(星期日)上班。
9 | 端午节;2013.6.10-2013.6.12;2013.6.8,2013.6.9 // 6月10日至12日放假调休,共3天。6月8日(星期六)、6月9日(星期日)上班。
10 | 中秋节;2013.9.19-2013.9.21;2013.9.22 // 9月19日至21日放假调休,共3天。9月22日(星期日)上班。
11 | 国庆节;2013.10.1-2013.10.7;2013.9.29,2013.10.12 // 10月1日至7日放假调休,共7天。9月29日(星期日)、10月12日(星期六)上班。
12 |
--------------------------------------------------------------------------------
/crawler.http:
--------------------------------------------------------------------------------
1 | POST https://sousuoht.www.gov.cn/athena/forward/2B22E8E39E850E17F95A016A74FCB6B673336FA8B6FEC0E2955907EF9AEE06BE
2 | Content-Type: application/json;charset=UTF-8
3 | Athenaappname: %E5%9B%BD%E7%BD%91%E6%90%9C%E7%B4%A2
4 | Athenaappkey: R6kU1sKz%2BSHMWevvn8zRHAGJOwe6o53KEf7v0BJPVWY0Vxb4gIMCWDshQDWxw2Ua5CtSpEalXVlVzlj4mulMw6lnQzuqTEDDRC833wtXJyC%2F1kPbME1oCijkQOluRhbXZj3iRK1nXCzq5Sw%2F%2B2XbJbm%2BFEPLZRwoNNeYoOLcueg%3D
5 |
6 | {
7 | "code": "17da70961a7",
8 | "historySearchWords": [
9 | "节假日安排"
10 | ],
11 | "dataTypeId": "107",
12 | "orderBy": "time",
13 | "searchBy": "title",
14 | "appendixType": "",
15 | "granularity": "ALL",
16 | "trackTotalHits": true,
17 | "beginDateTime": "",
18 | "endDateTime": "",
19 | "isSearchForced": 0,
20 | "filters": [],
21 | "pageNo": 1,
22 | "pageSize": 10,
23 | "customFilter": {
24 | "operator": "and",
25 | "properties": []
26 | },
27 | "searchWord": "节假日安排"
28 | }
29 |
--------------------------------------------------------------------------------
/parser/Main.hs:
--------------------------------------------------------------------------------
1 | module Main where
2 |
3 | import Data.Function (on)
4 | import Data.List (isPrefixOf, sortBy)
5 | import Main.Base
6 | import Main.Input
7 | import Main.Output
8 | import System.Directory (listDirectory)
9 | import System.FilePath ((>))
10 |
11 | -- Parse holiday data
12 | -- Generate ics files
13 | main :: IO ()
14 | main = do
15 | -- read files
16 | filesInDir <- listDirectory "./data"
17 | let files = filter ("20" `isPrefixOf`) filesInDir
18 | contents <- mapM (readFile . ("./data" >)) files
19 |
20 | -- parse data
21 | let calendarYearly = zipWith parseFile files contents
22 | debug calendarYearly
23 |
24 | -- write files
25 | let calendar = calendarYearly >>= join
26 | writeFile "./docs/index.html" $ generate calendar Both
27 |
28 | writeFile "./docs/main.ics" $ generate calendar Both
29 | writeFile "./docs/rest.ics" $ generate calendar Rest
30 | writeFile "./docs/work.ics" $ generate calendar Work
31 |
32 | -- Log holiday data ordered by each year
33 | debug :: [Yearly] -> IO ()
34 | debug yearly =
35 | let orderByYear = sortBy (compare `on` year) yearly
36 | printByDate holiday = do
37 | putStrLn $ "\nYear " ++ year holiday
38 | mapM_ print $ sortByDate $ join holiday
39 | in mapM_ printByDate orderByYear
40 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 中国大陆节假日安排 · 日历订阅
Chinese Holidays Calendar
2 |
3 | Calendar subscription link for public holidays in mainland China
4 |
5 | > Calendar data updated at 9:21 on December 17, 2025
6 |
7 | ## Demo
8 |
9 | 
10 |
11 | ## 如何订阅
12 |
13 | ### iOS / iPadOS
14 |
15 | 日历 - 添加日历 - 添加订阅日历 - 输入链接
16 | 「 [https://ical.muhan.org](https://ical.muhan.org) 」
17 |
18 | 
19 |
20 | ### macOS
21 |
22 | 日历 - 文件 - 新建日历订阅 - 输入链接
23 | 「 [https://ical.muhan.org](https://ical.muhan.org) 」
24 |
25 | 
26 |
27 | ## 为补班添加不同的颜色
28 |
29 | 分别订阅
30 | - 假期:「 [https://ical.muhan.org/rest.ics](https://ical.muhan.org/rest.ics) 」
31 | - 补班:「 [https://ical.muhan.org/work.ics](https://ical.muhan.org/work.ics) 」
32 |
33 | 给他们分配不同的颜色吧~
34 |
35 | 
36 |
37 | ## iOS 自动节假日闹钟
38 |
39 | 在周一至周五、调休补班日期自动打开标签内容包含「工作日闹钟」的闹钟
40 | 在周六、周日以及节假日假期自动关闭标签内容包含「工作日闹钟」的闹钟
41 |
42 | [戳此](https://www.icloud.com/shortcuts/71ddab11837b408188821c3d992e8e4c) 导入 iOS 快捷指令脚本,在「快捷指令」App 中设定一个每天凌晨运行的自动化任务吧~
43 |
44 | ## 维护者
45 |
46 | [@muhac](https://github.com/muhac)
47 |
48 |
49 |
50 | 
51 |
--------------------------------------------------------------------------------
/parser/Main/Output.hs:
--------------------------------------------------------------------------------
1 | module Main.Output where
2 |
3 | import Data.Time (defaultTimeLocale, formatTime)
4 | import Data.UUID (fromWords, toString)
5 | import Main.Base
6 | import Numeric (readHex)
7 | import Text.Printf (printf)
8 |
9 | -- Generate ics files
10 | generate :: [Holiday] -> Status -> String
11 | generate dates status = unlines [icsHead status, icsBody, icsTail]
12 | where
13 | icsBody = unlines $ map icsEvent events
14 | events = sortByDate $ filterByStatus status dates
15 |
16 | -- Standard ics format for the beginning
17 | icsHead :: Status -> String
18 | icsHead status =
19 | unlines
20 | [ "BEGIN:VCALENDAR"
21 | , "VERSION:2.0"
22 | , "PRODID:-//Rank Technology//Chinese Holidays//EN"
23 | , "X-WR-CALNAME:" ++ titleStatus status
24 | ]
25 |
26 | -- Standard ics format for each event
27 | icsEvent :: Holiday -> String
28 | icsEvent (Holiday (Group status name) (Date index total time)) =
29 | unlines
30 | [ "BEGIN:VEVENT"
31 | , "UID:" ++ uuid
32 | , "DTSTART;VALUE=DATE:" ++ formatTime defaultTimeLocale "%Y%m%d" time
33 | , "SUMMARY:" ++ name ++ show status
34 | , "DESCRIPTION:" ++ show status ++ printf "第%d天 / 共%d天" index total
35 | , "END:VEVENT"
36 | ]
37 | where
38 | uuid = toString $ fromWords a b c d
39 | a = fst . head . readHex $ formatTime defaultTimeLocale "%Y%m%d" time
40 | b = fromIntegral $ shift index + total
41 | c = fromIntegral $ shift $ indexStatus status
42 | d = 0xa95511fe -- 955.WLB
43 | shift = (*) 0x10000
44 |
45 | -- Standard ics format for the ending
46 | icsTail :: String
47 | icsTail = "END:VCALENDAR"
48 |
--------------------------------------------------------------------------------
/.github/workflows/cd.yml:
--------------------------------------------------------------------------------
1 | name: Continuous Delivery
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: "0 0 1/16 * *"
7 | push:
8 | branches:
9 | - "**"
10 |
11 | jobs:
12 | main:
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - name: Checkout this repository
17 | uses: actions/checkout@v4
18 | with:
19 | ref: ${{ github.head_ref }}
20 | fetch-depth: 2
21 |
22 | - name: Setup Python environment
23 | uses: actions/setup-python@v5
24 | with:
25 | python-version: "3.12"
26 |
27 | - name: Setup uv
28 | uses: astral-sh/setup-uv@v4
29 |
30 | - name: Install dependencies (uv)
31 | run: uv sync --locked
32 |
33 | - name: Run crawler script
34 | shell: bash
35 | run: uv run python crawler.py
36 |
37 | - name: Call LLM completion
38 | env:
39 | LANGSMITH_TRACING: "true"
40 | LANGSMITH_ENDPOINT: "https://api.smith.langchain.com"
41 | LANGSMITH_PROJECT: "chinese-holidays-calendar"
42 | LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_APIKEY }}
43 | OPENAI_API_KEY: ${{ secrets.OPENAI_APIKEY }}
44 | OPENAI_MODEL: "gpt-4.1-mini"
45 | run: uv run python holiday_llm.py
46 | continue-on-error: true
47 |
48 | - name: Setup Haskell and Cabal
49 | uses: haskell-actions/setup@v2
50 | with:
51 | ghc-version: "9.6"
52 | cabal-version: "3.10"
53 |
54 | - name: Build parser
55 | run: cabal build
56 |
57 | - name: Generate ICS files
58 | run: cabal run
59 |
60 | - name: Commit changes
61 | if: github.ref == 'refs/heads/main'
62 | uses: stefanzweifel/git-auto-commit-action@v5
63 | with:
64 | file_pattern: README.md data/* docs/*
65 | commit_message: update calendar data automatically
66 | commit_user_name: Muhan Li
67 | commit_user_email: 77625954+muhav@users.noreply.github.com
68 | commit_author: Muhan Li <77625954+muhav@users.noreply.github.com>
69 |
--------------------------------------------------------------------------------
/parser/Main/Input.hs:
--------------------------------------------------------------------------------
1 | module Main.Input where
2 |
3 | import Data.List (uncons)
4 | import Data.List.Split (splitOn)
5 | import Data.Maybe (mapMaybe)
6 | import Data.Time (UTCTime, addUTCTime, defaultTimeLocale, formatTime, parseTimeOrError)
7 | import Main.Base
8 | import System.FilePath (takeBaseName)
9 |
10 | -- Parse holiday data
11 | -- Organized by year
12 | parseFile :: FilePath -> String -> Yearly
13 | parseFile file content = Yearly yearName daysRest daysWork
14 | where
15 | yearName = takeBaseName file
16 | daysRest = parse content Rest
17 | daysWork = parse content Work
18 |
19 | -- Convert data to Date
20 | parse :: String -> Status -> [Holiday]
21 | parse content status = zip names dates >>= uncurry toHolidays
22 | where
23 | names = Group status . rawName <$> raw
24 | dates = parseDates . rawDate status <$> raw
25 | raw = parseRaw content
26 |
27 | -- Parse raw data from file
28 | -- Format: name;rest;work
29 | parseRaw :: String -> [HolidayRaw]
30 | parseRaw content = mapMaybe (toHolidayRaw . splitOn ";") eventsRaw
31 | where
32 | eventsRaw = mapMaybe (fmap fst . uncons . words) uncomment
33 | uncomment = mapMaybe (fmap fst . uncons . splitOn "//") $ lines content
34 |
35 | -- Expand date ranges to UTCTime list
36 | -- Support multiple date ranges separated by comma
37 | parseDates :: String -> [Date]
38 | parseDates ranges = zipWith3 Date [1 ..] (repeat $ length dates) dates
39 | where
40 | dates = splitOn "," ranges >>= parseDate . splitOn "-"
41 |
42 | -- Parse date range
43 | -- 1. like "2020.1.1"
44 | -- 2. like "2020.1.1-2020.1.3"
45 | parseDate :: [String] -> [UTCTime]
46 | parseDate [""] = []
47 | parseDate [single] = [parseTime single]
48 | parseDate [start, end]
49 | | start == end = parseDate [end]
50 | | otherwise = first : parseDate [second, end]
51 | where
52 | first = parseTime start
53 | second = printTime $ addUTCTime day first
54 | day = 24 * 60 * 60
55 | parseDate _ = []
56 |
57 | -- Parse date in format "2020.1.1"
58 | parseTime :: String -> UTCTime
59 | parseTime = parseTimeOrError True defaultTimeLocale "%Y.%-m.%-d"
60 |
61 | -- Format date in format "2020.1.1"
62 | printTime :: UTCTime -> String
63 | printTime = formatTime defaultTimeLocale "%Y.%-m.%-d"
64 |
--------------------------------------------------------------------------------
/holiday_llm.py:
--------------------------------------------------------------------------------
1 | """用 LLM 处理放假安排的数据"""
2 |
3 | import os
4 | import re
5 |
6 | import openai
7 | from langsmith.wrappers import wrap_openai
8 | from langsmith import traceable
9 |
10 | model = os.environ.get("OPENAI_MODEL")
11 | key = os.environ.get("OPENAI_API_KEY")
12 | client = wrap_openai(openai.Client(api_key=key))
13 |
14 | SYSTEM = "你需要把自然语言处理成格式化内容."
15 | PROMPT_PATH = os.path.join(os.path.dirname(__file__), "holiday_llm.prompt")
16 | with open(PROMPT_PATH, encoding="utf-8") as _f:
17 | PROMPT = _f.read()
18 |
19 |
20 | def main():
21 | """更新节假日信息文件"""
22 | for file in os.listdir('./data'):
23 | if file.endswith('.txt'):
24 | with open(f'./data/{file}', encoding='utf-8') as f_obj:
25 | content = f_obj.read()
26 |
27 | if "DATA NOT VERIFIED" not in content:
28 | continue
29 |
30 | data = parse(file[:4], content.split('\n'))
31 | data = '\n'.join(data).replace("DATA NOT VERIFIED", "// BY AI")
32 |
33 | with open(f'./data/{file}', 'w', encoding='utf-8') as f_obj:
34 | f_obj.write(data)
35 |
36 |
37 | def parse(year: str, lines: list[str]) -> list[str]:
38 | """按行处理节假日信息"""
39 | print(year)
40 |
41 | padding = max(len(line.split('//')[0]) for line in lines)
42 |
43 | for i, line in enumerate(lines):
44 | if len(line.split(';')) < 2:
45 | continue
46 |
47 | name = line.split(';')[0]
48 | text = line.split('//')[-1]
49 |
50 | query = f"{year}年{name}: {text}"
51 | value = get_response(query).strip()
52 |
53 | if value and '\n' not in value and re.search(r";\d{4}\.\d{1,2}\.\d{1,2}", value):
54 | lines[i] = f"{value:{padding}}// {text}"
55 |
56 | print(lines[i])
57 |
58 | return lines
59 |
60 |
61 | @traceable
62 | def get_response(query: str) -> str:
63 | """获取 LLM 的处理结果"""
64 | try:
65 | completion = client.chat.completions.create(
66 | model=model,
67 | messages=[
68 | {"role": "system", "content": SYSTEM},
69 | {"role": "user", "content": PROMPT + query},
70 | ],
71 | )
72 | return completion.choices[0].message.content
73 |
74 | except openai.APIConnectionError as e:
75 | print(e, query)
76 | return ""
77 |
78 |
79 | if __name__ == '__main__':
80 | main()
81 |
--------------------------------------------------------------------------------
/parser/Main/Base.hs:
--------------------------------------------------------------------------------
1 | module Main.Base where
2 |
3 | import Data.Function (on)
4 | import Data.List (sortBy)
5 | import Data.Time (UTCTime, defaultTimeLocale, formatTime)
6 |
7 | data Status = Both | Rest | Work deriving (Enum)
8 |
9 | instance Show Status where
10 | show Both = ""
11 | show Rest = "假期"
12 | show Work = "补班"
13 |
14 | -- Title of output ics file
15 | titleStatus :: Status -> String
16 | titleStatus Both = "中国节假日安排"
17 | titleStatus kind = "中国节假日安排(" ++ show kind ++ ")"
18 |
19 | -- Index of input txt file
20 | indexStatus :: Status -> Int
21 | indexStatus Both = 0
22 | indexStatus Rest = 1
23 | indexStatus Work = 2
24 |
25 | instance Eq Status where
26 | (==) = (==) `on` indexStatus
27 |
28 | data Yearly = Yearly
29 | { year :: String
30 | , rest :: [Holiday]
31 | , work :: [Holiday]
32 | }
33 |
34 | join :: Yearly -> [Holiday]
35 | join y = rest y ++ work y
36 |
37 | data HolidayRaw = HolidayRaw
38 | { rawName :: String
39 | , rawRest :: String
40 | , rawWork :: String
41 | }
42 |
43 | rawDate :: Status -> HolidayRaw -> String
44 | rawDate Rest = rawRest
45 | rawDate Work = rawWork
46 | rawDate _ = return ""
47 |
48 | toHolidayRaw :: [String] -> Maybe HolidayRaw
49 | toHolidayRaw [n, r, w] = Just $ HolidayRaw n r w
50 | toHolidayRaw [n, r] = toHolidayRaw [n, r, ""]
51 | toHolidayRaw _ = Nothing
52 |
53 | data Holiday = Holiday
54 | { holidayGroup :: Group
55 | , holidayDate :: Date
56 | }
57 |
58 | instance Show Holiday where
59 | show (Holiday group date) = unwords [show date, show group]
60 |
61 | toHolidays :: Group -> [Date] -> [Holiday]
62 | toHolidays group dates = Holiday group <$> dates
63 |
64 | data Group = Group
65 | { holidayStatus :: Status
66 | , holidayName :: String
67 | }
68 |
69 | instance Show Group where
70 | show (Group status name) = unwords [name, show status]
71 |
72 | data Date = Date
73 | { holidayIndex :: Int
74 | , holidayTotal :: Int
75 | , holidayTime :: UTCTime
76 | }
77 |
78 | instance Show Date where
79 | show (Date index total time) =
80 | unwords
81 | [ formatTime defaultTimeLocale "%Y-%m-%d" time
82 | , show index ++ "/" ++ show total
83 | ]
84 |
85 | sortByDate :: [Holiday] -> [Holiday]
86 | sortByDate = sortBy (compare `on` holidayTime . holidayDate)
87 |
88 | filterByStatus :: Status -> [Holiday] -> [Holiday]
89 | filterByStatus Both = id
90 | filterByStatus kind = filter ((== kind) . holidayStatus . holidayGroup)
91 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 | # MacOs trash
132 | .DS_Store
133 | .idea/
134 |
135 | # Haskell
136 | dist-newstyle/
137 | .vscode/
138 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: Continuous Integration
2 |
3 | on:
4 | push:
5 | branches:
6 | - "**"
7 | pull_request:
8 | branches:
9 | - "**"
10 |
11 | jobs:
12 |
13 | llm:
14 | name: LLM Service
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v4
19 |
20 | - name: Call OpenAI API
21 | env:
22 | OPENAI_API_KEY: ${{ secrets.OPENAI_APIKEY }}
23 | run: |
24 | curl https://api.openai.com/v1/chat/completions \
25 | -o response.json \
26 | -H "Content-Type: application/json" \
27 | -H "Authorization: Bearer $OPENAI_API_KEY" \
28 | -d '{
29 | "model": "gpt-4.1-mini",
30 | "messages": [
31 | {"role": "system", "content": "You are a helpful assistant."},
32 | {"role": "user", "content": "给我写一首五言绝句"}
33 | ]
34 | }'
35 |
36 | - name: Show response
37 | run: cat response.json | jq . || cat response.json
38 |
39 | crawler:
40 | name: Crawler Dry Run
41 | runs-on: ubuntu-latest
42 | strategy:
43 | matrix:
44 | python-version: [ "3.11", "3.12", "3.13" ]
45 |
46 | steps:
47 | - uses: actions/checkout@v4
48 |
49 | - name: Setup Python ${{ matrix.python-version }}
50 | uses: actions/setup-python@v5
51 | with:
52 | python-version: ${{ matrix.python-version }}
53 |
54 | - name: Setup uv
55 | uses: astral-sh/setup-uv@v4
56 |
57 | - name: Install dependencies
58 | run: uv sync --locked
59 |
60 | - name: Run crawler script
61 | shell: bash
62 | run: uv run python crawler.py
63 |
64 | parser:
65 | name: Parser Dry Run
66 | runs-on: ubuntu-latest
67 |
68 | strategy:
69 | matrix:
70 | ghc: [ "9.6", "9.8" ]
71 | cabal: [ "3.10", "latest" ]
72 | include:
73 | - ghc: "9.2.8"
74 | cabal: "3.10.1.0"
75 |
76 | steps:
77 | - uses: actions/checkout@v4
78 |
79 | - name: Setup Haskell ${{ matrix.ghc }} with Cabal ${{ matrix.cabal }}
80 | uses: haskell-actions/setup@v2
81 | with:
82 | ghc-version: ${{ matrix.ghc }}
83 | cabal-version: ${{ matrix.cabal }}
84 |
85 | - name: Configure the build
86 | run: |
87 | cabal configure --enable-tests --enable-benchmarks --disable-documentation
88 | cabal build --dry-run
89 |
90 | - name: Build
91 | run: cabal build all
92 |
93 | - name: Run tests
94 | run: cabal test all
95 |
96 | - name: Check cabal file
97 | run: cabal check
98 |
99 | - name: Run parser
100 | run: cabal run
101 |
102 | - name: Checkout files
103 | run: |
104 | pwd
105 | ls -la
106 | ls -la docs
107 |
108 | hlint:
109 | name: HLint
110 | runs-on: ubuntu-latest
111 |
112 | defaults:
113 | run:
114 | working-directory: .
115 |
116 | steps:
117 | - uses: actions/checkout@v4
118 |
119 | - name: "Set up HLint"
120 | uses: haskell-actions/hlint-setup@v2
121 |
122 | - name: "Run HLint"
123 | uses: haskell-actions/hlint-run@v2
124 | with:
125 | path: parser/
126 | fail-on: warning
127 |
128 | pylint:
129 | name: Pylint
130 | runs-on: ubuntu-latest
131 |
132 | steps:
133 | - uses: actions/checkout@v4
134 |
135 | - name: Set up Python Environment
136 | uses: actions/setup-python@v5
137 | with:
138 | python-version: "3.12"
139 |
140 | - name: Setup uv
141 | uses: astral-sh/setup-uv@v4
142 |
143 | - name: Install dependencies (uv dev)
144 | run: uv sync --dev --locked
145 |
146 | - name: Analyzing the code with pylint
147 | run: uv run pylint $(git ls-files '*.py')
148 |
--------------------------------------------------------------------------------
/parser.cabal:
--------------------------------------------------------------------------------
1 | cabal-version: 3.0
2 | -- The cabal-version field refers to the version of the .cabal specification,
3 | -- and can be different from the cabal-install (the tool) version and the
4 | -- Cabal (the library) version you are using. As such, the Cabal (the library)
5 | -- version used must be equal or greater than the version stated in this field.
6 | -- Starting from the specification version 2.2, the cabal-version field must be
7 | -- the first thing in the cabal file.
8 |
9 | -- Initial package description 'parser' generated by
10 | -- 'cabal init'. For further documentation, see:
11 | -- http://haskell.org/cabal/users-guide/
12 | --
13 | -- The name of the package.
14 | name: parser
15 | category: Data
16 | synopsis: Chinese Holidays Calendar Parser and Generator
17 | description: Calendar of Public Holidays in China
18 | 中国大陆节假日日历订阅
19 |
20 | -- The package version.
21 | -- See the Haskell package versioning policy (PVP) for standards
22 | -- guiding when and how versions should be incremented.
23 | -- https://pvp.haskell.org
24 | -- PVP summary: +-+------- breaking API changes
25 | -- | | +----- non-breaking API additions
26 | -- | | | +--- code changes with no API change
27 | version: 0.2.1.0
28 |
29 | -- A short (one-line) description of the package.
30 | -- synopsis:
31 |
32 | -- A longer description of the package.
33 | -- description:
34 |
35 | -- The license under which the package is released.
36 | license: GPL-3.0-only
37 |
38 | -- The file containing the license text.
39 | license-file: LICENSE
40 |
41 | -- The package author(s).
42 | author: Muhan Li
43 |
44 | -- An email address to which users can send suggestions, bug reports, and patches.
45 | maintainer: limuhan@msn.com
46 |
47 | -- A copyright notice.
48 | -- copyright:
49 | build-type: Simple
50 |
51 | -- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
52 | -- extra-doc-files: CHANGELOG.md
53 |
54 | -- Extra source files to be distributed with the package, such as examples, or a tutorial module.
55 | -- extra-source-files:
56 |
57 | -- formatting command: fourmolu --mode inplace $(git ls-files '*.hs') --indentation 2 --indent-wheres true
58 |
59 | common warnings
60 | ghc-options: -Wall
61 |
62 | executable main
63 | -- Import common warning flags.
64 | import: warnings
65 |
66 | -- .hs or .lhs file containing the Main module.
67 | main-is: Main.hs
68 |
69 | -- Modules included in this executable, other than Main.
70 | other-modules: Main.Base Main.Input Main.Output
71 |
72 | -- LANGUAGE extensions used by modules in this package.
73 | -- other-extensions:
74 |
75 | -- Other library packages from which modules are imported.
76 | build-depends: base >= 4.16.4.0 && < 4.20,
77 | directory >= 1.3.6 && < 1.4,
78 | filepath >= 1.4.2 && < 1.5,
79 | split >= 0.2.4 && < 0.3,
80 | time >= 1.11.1 && < 1.12,
81 | uuid >= 1.3.15 && < 1.4
82 |
83 | -- Directories containing source files.
84 | hs-source-dirs: parser
85 |
86 | -- Base language which the package is written in.
87 | default-language: Haskell2010
88 |
89 | test-suite test
90 | type: exitcode-stdio-1.0
91 | main-is: Test.hs
92 | other-modules: Main.Base Main.Input Main.Output
93 | build-depends: base >= 4.16.4.0 && < 4.20,
94 | directory >= 1.3.6 && < 1.4,
95 | filepath >= 1.4.2 && < 1.5,
96 | split >= 0.2.4 && < 0.3,
97 | time >= 1.11.1 && < 1.12,
98 | uuid >= 1.3.15 && < 1.4,
99 | HUnit >= 1.6 && < 1.7
100 | hs-source-dirs: parser
101 | default-language: Haskell2010
102 |
103 | source-repository head
104 | type: git
105 | location: https://github.com/theRank/chinese-holidays-calendar
106 |
--------------------------------------------------------------------------------
/crawler.py:
--------------------------------------------------------------------------------
1 | """从国务院官网抓取放假信息"""
2 |
3 | import os
4 | import re
5 | import json
6 | from datetime import datetime, timezone, timedelta
7 | from typing import Iterator, Tuple
8 |
9 | import requests
10 |
11 |
12 | def main():
13 | """更新节假日信息"""
14 | comments: list[str] = [
15 | "// automatically generated on",
16 | "// and manually checked on DATA NOT VERIFIED",
17 | ]
18 |
19 | for year, link, holidays in data():
20 | print(year, link, holidays, sep='\n')
21 | file = f"./data/{year}.txt"
22 |
23 | if os.path.isfile(file):
24 | with open(file, encoding='utf-8') as f_obj:
25 | existing = f_obj.read()
26 | if "DATA NOT VERIFIED" not in existing:
27 | continue # 数据已人工确认
28 |
29 | with open(file, 'w', encoding='utf-8') as f_obj:
30 | f_obj.write(
31 | f"{comments[0]} {beijing_time().strftime('%-m/%-d/%Y')}\n"
32 | f"{comments[1]}\n// source: {link}\n\n{holidays}"
33 | )
34 |
35 | with open('./README.md', 'r', encoding='utf-8') as f_obj:
36 | content = f_obj.read().split('\n')
37 |
38 | update_info = "> Calendar data updated "
39 | for i, line in enumerate(content):
40 | if line.startswith(update_info):
41 | content[i] = update_info + beijing_time().strftime("at %-H:%M on %B %-d, %Y")
42 |
43 | with open('./README.md', 'w', encoding='utf-8') as f_obj:
44 | f_obj.write('\n'.join(content))
45 |
46 |
47 | def data() -> Iterator[Tuple[str, str, str]]:
48 | """爬取国务院网站数据"""
49 | for year, link in source():
50 | print(f"\n\n{year}: {link}")
51 | results: list[str] = []
52 |
53 | response = requests.get(link, timeout=(5, 10))
54 | response.encoding = response.apparent_encoding
55 |
56 | line_regex = r"(?P.)、(?P.*):()?(?P.*放假.*。)"
57 | for line in response.text.replace('
', '\n').replace('
', '\n').split('\n'):
58 | if match := re.search(line_regex, line):
59 | work, rest, *_ = match.group("detail").split('。')
60 | dates = ';'.join((match.group("name"), parse(work, year), parse(rest, year)))
61 | print(dates) # 已知需要人工干预如下情况: 1.与周末连休, 2.补休
62 | results.append(f"{dates:50} // {match.group('detail')}")
63 |
64 | yield year, link, '\n'.join(results)
65 |
66 |
67 | def parse(text: str, year: str) -> str:
68 | """解析节假日安排数据"""
69 | results: list[str] = []
70 | range_type_a = r"(?P\d?\d)月(?P\d?\d)日(([^)]+))?至(?P\d?\d)月(?P\d?\d)日"
71 | range_type_b = r"(?P\d?\d)月(?P\d?\d)日(([^)]+))?至(?P\d?\d)日"
72 | single_date = r"(?P\d?\d)月(?P\d?\d)日"
73 |
74 | for item in text.split('、'):
75 | if match := re.search(range_type_a, item):
76 | results.append(f"{year}.{match.group('m1')}.{match.group('d1')}-"
77 | f"{year}.{match.group('m2')}.{match.group('d2')}")
78 | print(f"\tA: {results[-1]:25} {item}")
79 |
80 | elif match := re.search(range_type_b, item):
81 | results.append(f"{year}.{match.group('m1')}.{match.group('d1')}-"
82 | f"{year}.{match.group('m1')}.{match.group('d2')}")
83 | print(f"\tB: {results[-1]:25} {item}")
84 |
85 | elif match := re.search(single_date, item):
86 | results.append(f"{year}.{match.group('m1')}.{match.group('d1')}")
87 | print(f"\tS: {results[-1]:25} {item}")
88 |
89 | else:
90 | print(f"\tX: {'':15} {item}")
91 |
92 | return ','.join(results)
93 |
94 |
95 | def source() -> Iterator[Tuple[str, str]]:
96 | """获取官网发布通知列表"""
97 | search_url = ("https://sousuoht.www.gov.cn/athena/forward/"
98 | "2B22E8E39E850E17F95A016A74FCB6B673336FA8B6FEC0E2955907EF9AEE06BE")
99 | search_resp = requests.post(
100 | search_url,
101 | timeout=(5, 10),
102 | json={
103 | "code": "17da70961a7",
104 | "dataTypeId": "107",
105 | "orderBy": "time",
106 | "searchBy": "title",
107 | "pageNo": 1,
108 | "pageSize": 10,
109 | "searchWord": "节假日安排"
110 | },
111 | headers={
112 | "Content-Type": "application/json;charset=UTF-8",
113 | "Athenaappname": "%E5%9B%BD%E7%BD%91%E6%90%9C%E7%B4%A2", # 国网搜索
114 | "Athenaappkey": "R6kU1sKz%2BSHMWevvn8zRHAGJOwe6o53KEf7v0BJPVWY0Vxb4gIMCWDshQDW"
115 | "xw2Ua5CtSpEalXVlVzlj4mulMw6lnQzuqTEDDRC833wtXJyC%2F1kPbME1oCi"
116 | "jkQOluRhbXZj3iRK1nXCzq5Sw%2F%2B2XbJbm%2BFEPLZRwoNNeYoOLcueg%3D"
117 | },
118 | )
119 |
120 | search_resp.encoding = search_resp.apparent_encoding
121 | search_data = json.loads(search_resp.text)
122 | # print(search_data)
123 |
124 | for result in search_data["result"]["data"]["middle"]["list"]:
125 | if match := re.search(r"^国务院办公厅关于(?P20\d\d)年.*通知", result["title"]):
126 | print(match.group("year"), result["url"])
127 | print(result, end="\n\n")
128 | yield match.group("year"), result["url"]
129 |
130 |
131 | def beijing_time() -> datetime:
132 | """获取当前北京时间"""
133 | utc_time = datetime.utcnow().replace(tzinfo=timezone.utc)
134 | return utc_time.astimezone(timezone(timedelta(hours=8)))
135 |
136 |
137 | if __name__ == '__main__':
138 | main()
139 |
--------------------------------------------------------------------------------
/parser/Test.hs:
--------------------------------------------------------------------------------
1 | module Main where
2 |
3 | import Data.Function (on)
4 | import Main.Base
5 | import Main.Input
6 | import System.Exit (exitFailure, exitSuccess)
7 | import Test.HUnit
8 |
9 | instance Eq HolidayRaw where
10 | (==) = (==) `on` raw
11 |
12 | raw a = (rawName a, rawRest a, rawWork a)
13 |
14 | instance Show HolidayRaw where
15 | show raw = unwords [rawName raw, rawRest raw, rawWork raw]
16 |
17 | testA1 =
18 | TestCase
19 | ( assertEqual
20 | "A1 - data - basic"
21 | [HolidayRaw "a" "b" "c"]
22 | $ parseRaw "a;b;c"
23 | )
24 |
25 | testA2 =
26 | TestCase
27 | ( assertEqual
28 | "A2 - data - robust"
29 | [HolidayRaw "a12" "b345" "c678"]
30 | $ parseRaw " a12;b345;c678 "
31 | )
32 |
33 | testA3 =
34 | TestCase
35 | ( assertEqual
36 | "A3 - comments - basic"
37 | []
38 | $ parseRaw "//comment"
39 | )
40 |
41 | testA4 =
42 | TestCase
43 | ( assertEqual
44 | "A4 - comments - robust"
45 | []
46 | $ parseRaw " // a;b;c 123 "
47 | )
48 |
49 | testA5 =
50 | TestCase
51 | ( assertEqual
52 | "A5 - hybrid - basic"
53 | [HolidayRaw "a" "b" "c"]
54 | $ parseRaw "a;b;c // d;e;f 456 "
55 | )
56 |
57 | testA6 =
58 | TestCase
59 | ( assertEqual
60 | "A6 - hybrid - robust"
61 | [HolidayRaw "a" "b" "c"]
62 | $ parseRaw " a;b;c 123 // d;e;f 456 "
63 | )
64 |
65 | testA7 =
66 | TestCase
67 | ( assertEqual
68 | "A7 - empty - basic"
69 | []
70 | $ parseRaw ""
71 | )
72 |
73 | testA8 =
74 | TestCase
75 | ( assertEqual
76 | "A8 - empty - robust"
77 | []
78 | $ parseRaw " // "
79 | )
80 |
81 | testA9 =
82 | TestCase
83 | ( assertEqual
84 | "A9 - multi-line"
85 | [HolidayRaw "a" "b" "c", HolidayRaw "d" "e" "f"]
86 | $ parseRaw . unlines
87 | $ [ "// INTRO"
88 | , ""
89 | , "a;b;c // dp1"
90 | , "// comment"
91 | , "d;e;f // dp2"
92 | , "END // TEST"
93 | ]
94 | )
95 |
96 | testB1 =
97 | TestCase
98 | ( assertEqual
99 | "B1 - case 1. like 2020.1.1 - basic"
100 | ["2020.1.1"]
101 | $ map printTime
102 | $ parseDate ["2020.1.1"]
103 | )
104 |
105 | testB2 =
106 | TestCase
107 | ( assertEqual
108 | "B2 - case 1. like 2020.1.1 - robust"
109 | ["2021.11.2"]
110 | (map printTime $ parseDate ["2021.11.02"])
111 | )
112 |
113 | testB3 =
114 | TestCase
115 | ( assertEqual
116 | "B3 - case 2. like 2020.1.1-2020.1.3 - basic"
117 | ["2022.1.1", "2022.1.2", "2022.1.3"]
118 | (map printTime $ parseDate ["2022.1.1", "2022.1.3"])
119 | )
120 |
121 | testB4 =
122 | TestCase
123 | ( assertEqual
124 | "B4 - case 2. like 2020.1.1-2020.1.3 - cross month"
125 | ["2023.2.27", "2023.2.28", "2023.3.1", "2023.3.2"]
126 | (map printTime $ parseDate ["2023.2.27", "2023.3.2"])
127 | )
128 |
129 | testB5 =
130 | TestCase
131 | ( assertEqual
132 | "B5 - case 2. like 2020.1.1-2020.1.3 - cross month 2"
133 | ["2024.2.28", "2024.2.29", "2024.3.1"]
134 | (map printTime $ parseDate ["2024.2.28", "2024.3.1"])
135 | )
136 |
137 | testB6 =
138 | TestCase
139 | ( assertEqual
140 | "B6 - case 2. like 2020.1.1-2020.1.3 - cross year"
141 | ["2025.12.30", "2025.12.31", "2026.1.1", "2026.1.2"]
142 | (map printTime $ parseDate ["2025.12.30", "2026.1.2"])
143 | )
144 |
145 | testC1 =
146 | TestCase
147 | ( assertEqual
148 | "C1 - case 1. like 2020.1.1 - a1 2"
149 | [(1, 2, "2020.1.1"), (2, 2, "2020.1.3")]
150 | $ map (\(Date a b c) -> (a, b, printTime c))
151 | $ parseDates "2020.1.1,2020.1.3"
152 | )
153 |
154 | testC2 =
155 | TestCase
156 | ( assertEqual
157 | "C2 - case 1. like 2020.1.1 - a1 3"
158 | [(1, 3, "2020.1.1"), (2, 3, "2020.1.3"), (3, 3, "2020.1.5")]
159 | $ map (\(Date a b c) -> (a, b, printTime c))
160 | $ parseDates "2020.1.1,2020.1.3,2020.1.5"
161 | )
162 |
163 | testC3 =
164 | TestCase
165 | ( assertEqual
166 | "C3 - case 2. like 2020.1.1-2020.1.3 - a3 2"
167 | [(1, 4, "2020.1.1"), (2, 4, "2020.1.2"), (3, 4, "2020.1.6"), (4, 4, "2020.1.7")]
168 | $ map (\(Date a b c) -> (a, b, printTime c))
169 | $ parseDates "2020.1.1-2020.1.2,2020.1.6-2020.1.7"
170 | )
171 |
172 | testC4 =
173 | TestCase
174 | ( assertEqual
175 | "C4 - case 2. like 2020.1.1-2020.1.3 - a1 a3"
176 | [(1, 4, "2020.1.1"), (2, 4, "2020.1.2"), (3, 4, "2020.1.3"), (4, 4, "2020.1.6")]
177 | $ map (\(Date a b c) -> (a, b, printTime c))
178 | $ parseDates "2020.1.1-2020.1.3,2020.1.6"
179 | )
180 |
181 | testC5 =
182 | TestCase
183 | ( assertEqual
184 | "C5 - case 2. like 2020.1.1-2020.1.3 - a3 a1"
185 | [(1, 5, "2019.12.6"), (2, 5, "2020.1.1"), (3, 5, "2020.1.2"), (4, 5, "2020.1.3"), (5, 5, "2021.11.11")]
186 | $ map (\(Date a b c) -> (a, b, printTime c))
187 | $ parseDates "2019.12.6,2020.1.1-2020.1.3,2021.11.11"
188 | )
189 |
190 | testC6 =
191 | TestCase
192 | ( assertEqual
193 | "C6 - case 2. like 2020.1.1-2020.1.3 - a3 a1"
194 | [(1, 3, "2019.12.6"), (2, 3, "2020.1.1"), (3, 3, "2021.11.11")]
195 | $ map (\(Date a b c) -> (a, b, printTime c))
196 | $ parseDates "2019.12.6,2020.1.1-2020.1.1,,,2021.11.11"
197 | )
198 |
199 | tests :: Test
200 | tests =
201 | TestList
202 | [ -- A. parseRaw
203 | TestLabel "Test parseRaw 1" testA1
204 | , TestLabel "Test parseRaw 2" testA2
205 | , TestLabel "Test parseRaw 3" testA3
206 | , TestLabel "Test parseRaw 4" testA4
207 | , TestLabel "Test parseRaw 5" testA5
208 | , TestLabel "Test parseRaw 6" testA6
209 | , TestLabel "Test parseRaw 7" testA7
210 | , TestLabel "Test parseRaw 8" testA8
211 | , TestLabel "Test parseRaw 9" testA9
212 | , -- B. parseDate
213 | TestLabel "Test parseDate 1" testB1
214 | , TestLabel "Test parseDate 2" testB2
215 | , TestLabel "Test parseDate 3" testB3
216 | , TestLabel "Test parseDate 4" testB4
217 | , TestLabel "Test parseDate 5" testB5
218 | , TestLabel "Test parseDate 6" testB6
219 | , -- C. parseDates
220 | TestLabel "Test parseDates 1" testC1
221 | , TestLabel "Test parseDates 2" testC2
222 | , TestLabel "Test parseDates 3" testC3
223 | , TestLabel "Test parseDates 4" testC4
224 | , TestLabel "Test parseDates 5" testC5
225 | , TestLabel "Test parseDates 6" testC6
226 | ]
227 |
228 | main :: IO ()
229 | main = do
230 | counts <- runTestTT tests
231 | if errors counts + failures counts == 0
232 | then exitSuccess
233 | else exitFailure
234 |
--------------------------------------------------------------------------------
/docs/work.ics:
--------------------------------------------------------------------------------
1 | BEGIN:VCALENDAR
2 | VERSION:2.0
3 | PRODID:-//Rank Technology//Chinese Holidays//EN
4 | X-WR-CALNAME:中国节假日安排(补班)
5 |
6 | BEGIN:VEVENT
7 | UID:20130105-0001-0002-0002-0000a95511fe
8 | DTSTART;VALUE=DATE:20130105
9 | SUMMARY:元旦补班
10 | DESCRIPTION:补班第1天 / 共2天
11 | END:VEVENT
12 |
13 | BEGIN:VEVENT
14 | UID:20130106-0002-0002-0002-0000a95511fe
15 | DTSTART;VALUE=DATE:20130106
16 | SUMMARY:元旦补班
17 | DESCRIPTION:补班第2天 / 共2天
18 | END:VEVENT
19 |
20 | BEGIN:VEVENT
21 | UID:20130216-0001-0002-0002-0000a95511fe
22 | DTSTART;VALUE=DATE:20130216
23 | SUMMARY:春节补班
24 | DESCRIPTION:补班第1天 / 共2天
25 | END:VEVENT
26 |
27 | BEGIN:VEVENT
28 | UID:20130217-0002-0002-0002-0000a95511fe
29 | DTSTART;VALUE=DATE:20130217
30 | SUMMARY:春节补班
31 | DESCRIPTION:补班第2天 / 共2天
32 | END:VEVENT
33 |
34 | BEGIN:VEVENT
35 | UID:20130407-0001-0001-0002-0000a95511fe
36 | DTSTART;VALUE=DATE:20130407
37 | SUMMARY:清明节补班
38 | DESCRIPTION:补班第1天 / 共1天
39 | END:VEVENT
40 |
41 | BEGIN:VEVENT
42 | UID:20130427-0001-0002-0002-0000a95511fe
43 | DTSTART;VALUE=DATE:20130427
44 | SUMMARY:劳动节补班
45 | DESCRIPTION:补班第1天 / 共2天
46 | END:VEVENT
47 |
48 | BEGIN:VEVENT
49 | UID:20130428-0002-0002-0002-0000a95511fe
50 | DTSTART;VALUE=DATE:20130428
51 | SUMMARY:劳动节补班
52 | DESCRIPTION:补班第2天 / 共2天
53 | END:VEVENT
54 |
55 | BEGIN:VEVENT
56 | UID:20130608-0001-0002-0002-0000a95511fe
57 | DTSTART;VALUE=DATE:20130608
58 | SUMMARY:端午节补班
59 | DESCRIPTION:补班第1天 / 共2天
60 | END:VEVENT
61 |
62 | BEGIN:VEVENT
63 | UID:20130609-0002-0002-0002-0000a95511fe
64 | DTSTART;VALUE=DATE:20130609
65 | SUMMARY:端午节补班
66 | DESCRIPTION:补班第2天 / 共2天
67 | END:VEVENT
68 |
69 | BEGIN:VEVENT
70 | UID:20130922-0001-0001-0002-0000a95511fe
71 | DTSTART;VALUE=DATE:20130922
72 | SUMMARY:中秋节补班
73 | DESCRIPTION:补班第1天 / 共1天
74 | END:VEVENT
75 |
76 | BEGIN:VEVENT
77 | UID:20130929-0001-0002-0002-0000a95511fe
78 | DTSTART;VALUE=DATE:20130929
79 | SUMMARY:国庆节补班
80 | DESCRIPTION:补班第1天 / 共2天
81 | END:VEVENT
82 |
83 | BEGIN:VEVENT
84 | UID:20131012-0002-0002-0002-0000a95511fe
85 | DTSTART;VALUE=DATE:20131012
86 | SUMMARY:国庆节补班
87 | DESCRIPTION:补班第2天 / 共2天
88 | END:VEVENT
89 |
90 | BEGIN:VEVENT
91 | UID:20140126-0001-0002-0002-0000a95511fe
92 | DTSTART;VALUE=DATE:20140126
93 | SUMMARY:春节补班
94 | DESCRIPTION:补班第1天 / 共2天
95 | END:VEVENT
96 |
97 | BEGIN:VEVENT
98 | UID:20140208-0002-0002-0002-0000a95511fe
99 | DTSTART;VALUE=DATE:20140208
100 | SUMMARY:春节补班
101 | DESCRIPTION:补班第2天 / 共2天
102 | END:VEVENT
103 |
104 | BEGIN:VEVENT
105 | UID:20140504-0001-0001-0002-0000a95511fe
106 | DTSTART;VALUE=DATE:20140504
107 | SUMMARY:劳动节补班
108 | DESCRIPTION:补班第1天 / 共1天
109 | END:VEVENT
110 |
111 | BEGIN:VEVENT
112 | UID:20140928-0001-0002-0002-0000a95511fe
113 | DTSTART;VALUE=DATE:20140928
114 | SUMMARY:国庆节补班
115 | DESCRIPTION:补班第1天 / 共2天
116 | END:VEVENT
117 |
118 | BEGIN:VEVENT
119 | UID:20141011-0002-0002-0002-0000a95511fe
120 | DTSTART;VALUE=DATE:20141011
121 | SUMMARY:国庆节补班
122 | DESCRIPTION:补班第2天 / 共2天
123 | END:VEVENT
124 |
125 | BEGIN:VEVENT
126 | UID:20150104-0001-0001-0002-0000a95511fe
127 | DTSTART;VALUE=DATE:20150104
128 | SUMMARY:元旦补班
129 | DESCRIPTION:补班第1天 / 共1天
130 | END:VEVENT
131 |
132 | BEGIN:VEVENT
133 | UID:20150215-0001-0002-0002-0000a95511fe
134 | DTSTART;VALUE=DATE:20150215
135 | SUMMARY:春节补班
136 | DESCRIPTION:补班第1天 / 共2天
137 | END:VEVENT
138 |
139 | BEGIN:VEVENT
140 | UID:20150228-0002-0002-0002-0000a95511fe
141 | DTSTART;VALUE=DATE:20150228
142 | SUMMARY:春节补班
143 | DESCRIPTION:补班第2天 / 共2天
144 | END:VEVENT
145 |
146 | BEGIN:VEVENT
147 | UID:20151010-0001-0001-0002-0000a95511fe
148 | DTSTART;VALUE=DATE:20151010
149 | SUMMARY:国庆节补班
150 | DESCRIPTION:补班第1天 / 共1天
151 | END:VEVENT
152 |
153 | BEGIN:VEVENT
154 | UID:20160206-0001-0002-0002-0000a95511fe
155 | DTSTART;VALUE=DATE:20160206
156 | SUMMARY:春节补班
157 | DESCRIPTION:补班第1天 / 共2天
158 | END:VEVENT
159 |
160 | BEGIN:VEVENT
161 | UID:20160214-0002-0002-0002-0000a95511fe
162 | DTSTART;VALUE=DATE:20160214
163 | SUMMARY:春节补班
164 | DESCRIPTION:补班第2天 / 共2天
165 | END:VEVENT
166 |
167 | BEGIN:VEVENT
168 | UID:20160612-0001-0001-0002-0000a95511fe
169 | DTSTART;VALUE=DATE:20160612
170 | SUMMARY:端午节补班
171 | DESCRIPTION:补班第1天 / 共1天
172 | END:VEVENT
173 |
174 | BEGIN:VEVENT
175 | UID:20160918-0001-0001-0002-0000a95511fe
176 | DTSTART;VALUE=DATE:20160918
177 | SUMMARY:中秋节补班
178 | DESCRIPTION:补班第1天 / 共1天
179 | END:VEVENT
180 |
181 | BEGIN:VEVENT
182 | UID:20161008-0001-0002-0002-0000a95511fe
183 | DTSTART;VALUE=DATE:20161008
184 | SUMMARY:国庆节补班
185 | DESCRIPTION:补班第1天 / 共2天
186 | END:VEVENT
187 |
188 | BEGIN:VEVENT
189 | UID:20161009-0002-0002-0002-0000a95511fe
190 | DTSTART;VALUE=DATE:20161009
191 | SUMMARY:国庆节补班
192 | DESCRIPTION:补班第2天 / 共2天
193 | END:VEVENT
194 |
195 | BEGIN:VEVENT
196 | UID:20170122-0001-0002-0002-0000a95511fe
197 | DTSTART;VALUE=DATE:20170122
198 | SUMMARY:春节补班
199 | DESCRIPTION:补班第1天 / 共2天
200 | END:VEVENT
201 |
202 | BEGIN:VEVENT
203 | UID:20170204-0002-0002-0002-0000a95511fe
204 | DTSTART;VALUE=DATE:20170204
205 | SUMMARY:春节补班
206 | DESCRIPTION:补班第2天 / 共2天
207 | END:VEVENT
208 |
209 | BEGIN:VEVENT
210 | UID:20170401-0001-0001-0002-0000a95511fe
211 | DTSTART;VALUE=DATE:20170401
212 | SUMMARY:清明节补班
213 | DESCRIPTION:补班第1天 / 共1天
214 | END:VEVENT
215 |
216 | BEGIN:VEVENT
217 | UID:20170527-0001-0001-0002-0000a95511fe
218 | DTSTART;VALUE=DATE:20170527
219 | SUMMARY:端午节补班
220 | DESCRIPTION:补班第1天 / 共1天
221 | END:VEVENT
222 |
223 | BEGIN:VEVENT
224 | UID:20170930-0001-0001-0002-0000a95511fe
225 | DTSTART;VALUE=DATE:20170930
226 | SUMMARY:中秋节、国庆节补班
227 | DESCRIPTION:补班第1天 / 共1天
228 | END:VEVENT
229 |
230 | BEGIN:VEVENT
231 | UID:20180211-0001-0002-0002-0000a95511fe
232 | DTSTART;VALUE=DATE:20180211
233 | SUMMARY:春节补班
234 | DESCRIPTION:补班第1天 / 共2天
235 | END:VEVENT
236 |
237 | BEGIN:VEVENT
238 | UID:20180224-0002-0002-0002-0000a95511fe
239 | DTSTART;VALUE=DATE:20180224
240 | SUMMARY:春节补班
241 | DESCRIPTION:补班第2天 / 共2天
242 | END:VEVENT
243 |
244 | BEGIN:VEVENT
245 | UID:20180408-0001-0001-0002-0000a95511fe
246 | DTSTART;VALUE=DATE:20180408
247 | SUMMARY:清明节补班
248 | DESCRIPTION:补班第1天 / 共1天
249 | END:VEVENT
250 |
251 | BEGIN:VEVENT
252 | UID:20180428-0001-0001-0002-0000a95511fe
253 | DTSTART;VALUE=DATE:20180428
254 | SUMMARY:劳动节补班
255 | DESCRIPTION:补班第1天 / 共1天
256 | END:VEVENT
257 |
258 | BEGIN:VEVENT
259 | UID:20180929-0001-0002-0002-0000a95511fe
260 | DTSTART;VALUE=DATE:20180929
261 | SUMMARY:国庆节补班
262 | DESCRIPTION:补班第1天 / 共2天
263 | END:VEVENT
264 |
265 | BEGIN:VEVENT
266 | UID:20180930-0002-0002-0002-0000a95511fe
267 | DTSTART;VALUE=DATE:20180930
268 | SUMMARY:国庆节补班
269 | DESCRIPTION:补班第2天 / 共2天
270 | END:VEVENT
271 |
272 | BEGIN:VEVENT
273 | UID:20181219-0001-0001-0002-0000a95511fe
274 | DTSTART;VALUE=DATE:20181219
275 | SUMMARY:元旦补班
276 | DESCRIPTION:补班第1天 / 共1天
277 | END:VEVENT
278 |
279 | BEGIN:VEVENT
280 | UID:20190202-0001-0002-0002-0000a95511fe
281 | DTSTART;VALUE=DATE:20190202
282 | SUMMARY:春节补班
283 | DESCRIPTION:补班第1天 / 共2天
284 | END:VEVENT
285 |
286 | BEGIN:VEVENT
287 | UID:20190203-0002-0002-0002-0000a95511fe
288 | DTSTART;VALUE=DATE:20190203
289 | SUMMARY:春节补班
290 | DESCRIPTION:补班第2天 / 共2天
291 | END:VEVENT
292 |
293 | BEGIN:VEVENT
294 | UID:20190929-0001-0002-0002-0000a95511fe
295 | DTSTART;VALUE=DATE:20190929
296 | SUMMARY:国庆节补班
297 | DESCRIPTION:补班第1天 / 共2天
298 | END:VEVENT
299 |
300 | BEGIN:VEVENT
301 | UID:20191012-0002-0002-0002-0000a95511fe
302 | DTSTART;VALUE=DATE:20191012
303 | SUMMARY:国庆节补班
304 | DESCRIPTION:补班第2天 / 共2天
305 | END:VEVENT
306 |
307 | BEGIN:VEVENT
308 | UID:20200119-0001-0002-0002-0000a95511fe
309 | DTSTART;VALUE=DATE:20200119
310 | SUMMARY:春节补班
311 | DESCRIPTION:补班第1天 / 共2天
312 | END:VEVENT
313 |
314 | BEGIN:VEVENT
315 | UID:20200201-0002-0002-0002-0000a95511fe
316 | DTSTART;VALUE=DATE:20200201
317 | SUMMARY:春节补班
318 | DESCRIPTION:补班第2天 / 共2天
319 | END:VEVENT
320 |
321 | BEGIN:VEVENT
322 | UID:20200426-0001-0002-0002-0000a95511fe
323 | DTSTART;VALUE=DATE:20200426
324 | SUMMARY:劳动节补班
325 | DESCRIPTION:补班第1天 / 共2天
326 | END:VEVENT
327 |
328 | BEGIN:VEVENT
329 | UID:20200509-0002-0002-0002-0000a95511fe
330 | DTSTART;VALUE=DATE:20200509
331 | SUMMARY:劳动节补班
332 | DESCRIPTION:补班第2天 / 共2天
333 | END:VEVENT
334 |
335 | BEGIN:VEVENT
336 | UID:20200628-0001-0001-0002-0000a95511fe
337 | DTSTART;VALUE=DATE:20200628
338 | SUMMARY:端午节补班
339 | DESCRIPTION:补班第1天 / 共1天
340 | END:VEVENT
341 |
342 | BEGIN:VEVENT
343 | UID:20200927-0001-0002-0002-0000a95511fe
344 | DTSTART;VALUE=DATE:20200927
345 | SUMMARY:国庆节、中秋节补班
346 | DESCRIPTION:补班第1天 / 共2天
347 | END:VEVENT
348 |
349 | BEGIN:VEVENT
350 | UID:20201010-0002-0002-0002-0000a95511fe
351 | DTSTART;VALUE=DATE:20201010
352 | SUMMARY:国庆节、中秋节补班
353 | DESCRIPTION:补班第2天 / 共2天
354 | END:VEVENT
355 |
356 | BEGIN:VEVENT
357 | UID:20210207-0001-0002-0002-0000a95511fe
358 | DTSTART;VALUE=DATE:20210207
359 | SUMMARY:春节补班
360 | DESCRIPTION:补班第1天 / 共2天
361 | END:VEVENT
362 |
363 | BEGIN:VEVENT
364 | UID:20210220-0002-0002-0002-0000a95511fe
365 | DTSTART;VALUE=DATE:20210220
366 | SUMMARY:春节补班
367 | DESCRIPTION:补班第2天 / 共2天
368 | END:VEVENT
369 |
370 | BEGIN:VEVENT
371 | UID:20210425-0001-0002-0002-0000a95511fe
372 | DTSTART;VALUE=DATE:20210425
373 | SUMMARY:劳动节补班
374 | DESCRIPTION:补班第1天 / 共2天
375 | END:VEVENT
376 |
377 | BEGIN:VEVENT
378 | UID:20210508-0002-0002-0002-0000a95511fe
379 | DTSTART;VALUE=DATE:20210508
380 | SUMMARY:劳动节补班
381 | DESCRIPTION:补班第2天 / 共2天
382 | END:VEVENT
383 |
384 | BEGIN:VEVENT
385 | UID:20210918-0001-0001-0002-0000a95511fe
386 | DTSTART;VALUE=DATE:20210918
387 | SUMMARY:中秋节补班
388 | DESCRIPTION:补班第1天 / 共1天
389 | END:VEVENT
390 |
391 | BEGIN:VEVENT
392 | UID:20210926-0001-0002-0002-0000a95511fe
393 | DTSTART;VALUE=DATE:20210926
394 | SUMMARY:国庆节补班
395 | DESCRIPTION:补班第1天 / 共2天
396 | END:VEVENT
397 |
398 | BEGIN:VEVENT
399 | UID:20211009-0002-0002-0002-0000a95511fe
400 | DTSTART;VALUE=DATE:20211009
401 | SUMMARY:国庆节补班
402 | DESCRIPTION:补班第2天 / 共2天
403 | END:VEVENT
404 |
405 | BEGIN:VEVENT
406 | UID:20220129-0001-0002-0002-0000a95511fe
407 | DTSTART;VALUE=DATE:20220129
408 | SUMMARY:春节补班
409 | DESCRIPTION:补班第1天 / 共2天
410 | END:VEVENT
411 |
412 | BEGIN:VEVENT
413 | UID:20220130-0002-0002-0002-0000a95511fe
414 | DTSTART;VALUE=DATE:20220130
415 | SUMMARY:春节补班
416 | DESCRIPTION:补班第2天 / 共2天
417 | END:VEVENT
418 |
419 | BEGIN:VEVENT
420 | UID:20220402-0001-0001-0002-0000a95511fe
421 | DTSTART;VALUE=DATE:20220402
422 | SUMMARY:清明节补班
423 | DESCRIPTION:补班第1天 / 共1天
424 | END:VEVENT
425 |
426 | BEGIN:VEVENT
427 | UID:20220424-0001-0002-0002-0000a95511fe
428 | DTSTART;VALUE=DATE:20220424
429 | SUMMARY:劳动节补班
430 | DESCRIPTION:补班第1天 / 共2天
431 | END:VEVENT
432 |
433 | BEGIN:VEVENT
434 | UID:20220507-0002-0002-0002-0000a95511fe
435 | DTSTART;VALUE=DATE:20220507
436 | SUMMARY:劳动节补班
437 | DESCRIPTION:补班第2天 / 共2天
438 | END:VEVENT
439 |
440 | BEGIN:VEVENT
441 | UID:20221008-0001-0002-0002-0000a95511fe
442 | DTSTART;VALUE=DATE:20221008
443 | SUMMARY:国庆节补班
444 | DESCRIPTION:补班第1天 / 共2天
445 | END:VEVENT
446 |
447 | BEGIN:VEVENT
448 | UID:20221009-0002-0002-0002-0000a95511fe
449 | DTSTART;VALUE=DATE:20221009
450 | SUMMARY:国庆节补班
451 | DESCRIPTION:补班第2天 / 共2天
452 | END:VEVENT
453 |
454 | BEGIN:VEVENT
455 | UID:20230128-0001-0002-0002-0000a95511fe
456 | DTSTART;VALUE=DATE:20230128
457 | SUMMARY:春节补班
458 | DESCRIPTION:补班第1天 / 共2天
459 | END:VEVENT
460 |
461 | BEGIN:VEVENT
462 | UID:20230129-0002-0002-0002-0000a95511fe
463 | DTSTART;VALUE=DATE:20230129
464 | SUMMARY:春节补班
465 | DESCRIPTION:补班第2天 / 共2天
466 | END:VEVENT
467 |
468 | BEGIN:VEVENT
469 | UID:20230423-0001-0002-0002-0000a95511fe
470 | DTSTART;VALUE=DATE:20230423
471 | SUMMARY:劳动节补班
472 | DESCRIPTION:补班第1天 / 共2天
473 | END:VEVENT
474 |
475 | BEGIN:VEVENT
476 | UID:20230506-0002-0002-0002-0000a95511fe
477 | DTSTART;VALUE=DATE:20230506
478 | SUMMARY:劳动节补班
479 | DESCRIPTION:补班第2天 / 共2天
480 | END:VEVENT
481 |
482 | BEGIN:VEVENT
483 | UID:20230625-0001-0001-0002-0000a95511fe
484 | DTSTART;VALUE=DATE:20230625
485 | SUMMARY:端午节补班
486 | DESCRIPTION:补班第1天 / 共1天
487 | END:VEVENT
488 |
489 | BEGIN:VEVENT
490 | UID:20231007-0001-0002-0002-0000a95511fe
491 | DTSTART;VALUE=DATE:20231007
492 | SUMMARY:中秋节、国庆节补班
493 | DESCRIPTION:补班第1天 / 共2天
494 | END:VEVENT
495 |
496 | BEGIN:VEVENT
497 | UID:20231008-0002-0002-0002-0000a95511fe
498 | DTSTART;VALUE=DATE:20231008
499 | SUMMARY:中秋节、国庆节补班
500 | DESCRIPTION:补班第2天 / 共2天
501 | END:VEVENT
502 |
503 | BEGIN:VEVENT
504 | UID:20240204-0001-0002-0002-0000a95511fe
505 | DTSTART;VALUE=DATE:20240204
506 | SUMMARY:春节补班
507 | DESCRIPTION:补班第1天 / 共2天
508 | END:VEVENT
509 |
510 | BEGIN:VEVENT
511 | UID:20240218-0002-0002-0002-0000a95511fe
512 | DTSTART;VALUE=DATE:20240218
513 | SUMMARY:春节补班
514 | DESCRIPTION:补班第2天 / 共2天
515 | END:VEVENT
516 |
517 | BEGIN:VEVENT
518 | UID:20240407-0001-0001-0002-0000a95511fe
519 | DTSTART;VALUE=DATE:20240407
520 | SUMMARY:清明节补班
521 | DESCRIPTION:补班第1天 / 共1天
522 | END:VEVENT
523 |
524 | BEGIN:VEVENT
525 | UID:20240428-0001-0002-0002-0000a95511fe
526 | DTSTART;VALUE=DATE:20240428
527 | SUMMARY:劳动节补班
528 | DESCRIPTION:补班第1天 / 共2天
529 | END:VEVENT
530 |
531 | BEGIN:VEVENT
532 | UID:20240511-0002-0002-0002-0000a95511fe
533 | DTSTART;VALUE=DATE:20240511
534 | SUMMARY:劳动节补班
535 | DESCRIPTION:补班第2天 / 共2天
536 | END:VEVENT
537 |
538 | BEGIN:VEVENT
539 | UID:20240914-0001-0001-0002-0000a95511fe
540 | DTSTART;VALUE=DATE:20240914
541 | SUMMARY:中秋节补班
542 | DESCRIPTION:补班第1天 / 共1天
543 | END:VEVENT
544 |
545 | BEGIN:VEVENT
546 | UID:20240929-0001-0002-0002-0000a95511fe
547 | DTSTART;VALUE=DATE:20240929
548 | SUMMARY:国庆节补班
549 | DESCRIPTION:补班第1天 / 共2天
550 | END:VEVENT
551 |
552 | BEGIN:VEVENT
553 | UID:20241012-0002-0002-0002-0000a95511fe
554 | DTSTART;VALUE=DATE:20241012
555 | SUMMARY:国庆节补班
556 | DESCRIPTION:补班第2天 / 共2天
557 | END:VEVENT
558 |
559 | BEGIN:VEVENT
560 | UID:20250126-0001-0002-0002-0000a95511fe
561 | DTSTART;VALUE=DATE:20250126
562 | SUMMARY:春节补班
563 | DESCRIPTION:补班第1天 / 共2天
564 | END:VEVENT
565 |
566 | BEGIN:VEVENT
567 | UID:20250208-0002-0002-0002-0000a95511fe
568 | DTSTART;VALUE=DATE:20250208
569 | SUMMARY:春节补班
570 | DESCRIPTION:补班第2天 / 共2天
571 | END:VEVENT
572 |
573 | BEGIN:VEVENT
574 | UID:20250427-0001-0001-0002-0000a95511fe
575 | DTSTART;VALUE=DATE:20250427
576 | SUMMARY:劳动节补班
577 | DESCRIPTION:补班第1天 / 共1天
578 | END:VEVENT
579 |
580 | BEGIN:VEVENT
581 | UID:20250928-0001-0002-0002-0000a95511fe
582 | DTSTART;VALUE=DATE:20250928
583 | SUMMARY:国庆节、中秋节补班
584 | DESCRIPTION:补班第1天 / 共2天
585 | END:VEVENT
586 |
587 | BEGIN:VEVENT
588 | UID:20251011-0002-0002-0002-0000a95511fe
589 | DTSTART;VALUE=DATE:20251011
590 | SUMMARY:国庆节、中秋节补班
591 | DESCRIPTION:补班第2天 / 共2天
592 | END:VEVENT
593 |
594 | BEGIN:VEVENT
595 | UID:20260104-0001-0001-0002-0000a95511fe
596 | DTSTART;VALUE=DATE:20260104
597 | SUMMARY:元旦补班
598 | DESCRIPTION:补班第1天 / 共1天
599 | END:VEVENT
600 |
601 | BEGIN:VEVENT
602 | UID:20260214-0001-0002-0002-0000a95511fe
603 | DTSTART;VALUE=DATE:20260214
604 | SUMMARY:春节补班
605 | DESCRIPTION:补班第1天 / 共2天
606 | END:VEVENT
607 |
608 | BEGIN:VEVENT
609 | UID:20260228-0002-0002-0002-0000a95511fe
610 | DTSTART;VALUE=DATE:20260228
611 | SUMMARY:春节补班
612 | DESCRIPTION:补班第2天 / 共2天
613 | END:VEVENT
614 |
615 | BEGIN:VEVENT
616 | UID:20260509-0001-0001-0002-0000a95511fe
617 | DTSTART;VALUE=DATE:20260509
618 | SUMMARY:劳动节补班
619 | DESCRIPTION:补班第1天 / 共1天
620 | END:VEVENT
621 |
622 | BEGIN:VEVENT
623 | UID:20260920-0001-0002-0002-0000a95511fe
624 | DTSTART;VALUE=DATE:20260920
625 | SUMMARY:国庆节补班
626 | DESCRIPTION:补班第1天 / 共2天
627 | END:VEVENT
628 |
629 | BEGIN:VEVENT
630 | UID:20261010-0002-0002-0002-0000a95511fe
631 | DTSTART;VALUE=DATE:20261010
632 | SUMMARY:国庆节补班
633 | DESCRIPTION:补班第2天 / 共2天
634 | END:VEVENT
635 |
636 |
637 | END:VCALENDAR
638 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/docs/rest.ics:
--------------------------------------------------------------------------------
1 | BEGIN:VCALENDAR
2 | VERSION:2.0
3 | PRODID:-//Rank Technology//Chinese Holidays//EN
4 | X-WR-CALNAME:中国节假日安排(假期)
5 |
6 | BEGIN:VEVENT
7 | UID:20130101-0001-0003-0001-0000a95511fe
8 | DTSTART;VALUE=DATE:20130101
9 | SUMMARY:元旦假期
10 | DESCRIPTION:假期第1天 / 共3天
11 | END:VEVENT
12 |
13 | BEGIN:VEVENT
14 | UID:20130102-0002-0003-0001-0000a95511fe
15 | DTSTART;VALUE=DATE:20130102
16 | SUMMARY:元旦假期
17 | DESCRIPTION:假期第2天 / 共3天
18 | END:VEVENT
19 |
20 | BEGIN:VEVENT
21 | UID:20130103-0003-0003-0001-0000a95511fe
22 | DTSTART;VALUE=DATE:20130103
23 | SUMMARY:元旦假期
24 | DESCRIPTION:假期第3天 / 共3天
25 | END:VEVENT
26 |
27 | BEGIN:VEVENT
28 | UID:20130209-0001-0007-0001-0000a95511fe
29 | DTSTART;VALUE=DATE:20130209
30 | SUMMARY:春节假期
31 | DESCRIPTION:假期第1天 / 共7天
32 | END:VEVENT
33 |
34 | BEGIN:VEVENT
35 | UID:20130210-0002-0007-0001-0000a95511fe
36 | DTSTART;VALUE=DATE:20130210
37 | SUMMARY:春节假期
38 | DESCRIPTION:假期第2天 / 共7天
39 | END:VEVENT
40 |
41 | BEGIN:VEVENT
42 | UID:20130211-0003-0007-0001-0000a95511fe
43 | DTSTART;VALUE=DATE:20130211
44 | SUMMARY:春节假期
45 | DESCRIPTION:假期第3天 / 共7天
46 | END:VEVENT
47 |
48 | BEGIN:VEVENT
49 | UID:20130212-0004-0007-0001-0000a95511fe
50 | DTSTART;VALUE=DATE:20130212
51 | SUMMARY:春节假期
52 | DESCRIPTION:假期第4天 / 共7天
53 | END:VEVENT
54 |
55 | BEGIN:VEVENT
56 | UID:20130213-0005-0007-0001-0000a95511fe
57 | DTSTART;VALUE=DATE:20130213
58 | SUMMARY:春节假期
59 | DESCRIPTION:假期第5天 / 共7天
60 | END:VEVENT
61 |
62 | BEGIN:VEVENT
63 | UID:20130214-0006-0007-0001-0000a95511fe
64 | DTSTART;VALUE=DATE:20130214
65 | SUMMARY:春节假期
66 | DESCRIPTION:假期第6天 / 共7天
67 | END:VEVENT
68 |
69 | BEGIN:VEVENT
70 | UID:20130215-0007-0007-0001-0000a95511fe
71 | DTSTART;VALUE=DATE:20130215
72 | SUMMARY:春节假期
73 | DESCRIPTION:假期第7天 / 共7天
74 | END:VEVENT
75 |
76 | BEGIN:VEVENT
77 | UID:20130404-0001-0003-0001-0000a95511fe
78 | DTSTART;VALUE=DATE:20130404
79 | SUMMARY:清明节假期
80 | DESCRIPTION:假期第1天 / 共3天
81 | END:VEVENT
82 |
83 | BEGIN:VEVENT
84 | UID:20130405-0002-0003-0001-0000a95511fe
85 | DTSTART;VALUE=DATE:20130405
86 | SUMMARY:清明节假期
87 | DESCRIPTION:假期第2天 / 共3天
88 | END:VEVENT
89 |
90 | BEGIN:VEVENT
91 | UID:20130406-0003-0003-0001-0000a95511fe
92 | DTSTART;VALUE=DATE:20130406
93 | SUMMARY:清明节假期
94 | DESCRIPTION:假期第3天 / 共3天
95 | END:VEVENT
96 |
97 | BEGIN:VEVENT
98 | UID:20130429-0001-0003-0001-0000a95511fe
99 | DTSTART;VALUE=DATE:20130429
100 | SUMMARY:劳动节假期
101 | DESCRIPTION:假期第1天 / 共3天
102 | END:VEVENT
103 |
104 | BEGIN:VEVENT
105 | UID:20130430-0002-0003-0001-0000a95511fe
106 | DTSTART;VALUE=DATE:20130430
107 | SUMMARY:劳动节假期
108 | DESCRIPTION:假期第2天 / 共3天
109 | END:VEVENT
110 |
111 | BEGIN:VEVENT
112 | UID:20130501-0003-0003-0001-0000a95511fe
113 | DTSTART;VALUE=DATE:20130501
114 | SUMMARY:劳动节假期
115 | DESCRIPTION:假期第3天 / 共3天
116 | END:VEVENT
117 |
118 | BEGIN:VEVENT
119 | UID:20130610-0001-0003-0001-0000a95511fe
120 | DTSTART;VALUE=DATE:20130610
121 | SUMMARY:端午节假期
122 | DESCRIPTION:假期第1天 / 共3天
123 | END:VEVENT
124 |
125 | BEGIN:VEVENT
126 | UID:20130611-0002-0003-0001-0000a95511fe
127 | DTSTART;VALUE=DATE:20130611
128 | SUMMARY:端午节假期
129 | DESCRIPTION:假期第2天 / 共3天
130 | END:VEVENT
131 |
132 | BEGIN:VEVENT
133 | UID:20130612-0003-0003-0001-0000a95511fe
134 | DTSTART;VALUE=DATE:20130612
135 | SUMMARY:端午节假期
136 | DESCRIPTION:假期第3天 / 共3天
137 | END:VEVENT
138 |
139 | BEGIN:VEVENT
140 | UID:20130919-0001-0003-0001-0000a95511fe
141 | DTSTART;VALUE=DATE:20130919
142 | SUMMARY:中秋节假期
143 | DESCRIPTION:假期第1天 / 共3天
144 | END:VEVENT
145 |
146 | BEGIN:VEVENT
147 | UID:20130920-0002-0003-0001-0000a95511fe
148 | DTSTART;VALUE=DATE:20130920
149 | SUMMARY:中秋节假期
150 | DESCRIPTION:假期第2天 / 共3天
151 | END:VEVENT
152 |
153 | BEGIN:VEVENT
154 | UID:20130921-0003-0003-0001-0000a95511fe
155 | DTSTART;VALUE=DATE:20130921
156 | SUMMARY:中秋节假期
157 | DESCRIPTION:假期第3天 / 共3天
158 | END:VEVENT
159 |
160 | BEGIN:VEVENT
161 | UID:20131001-0001-0007-0001-0000a95511fe
162 | DTSTART;VALUE=DATE:20131001
163 | SUMMARY:国庆节假期
164 | DESCRIPTION:假期第1天 / 共7天
165 | END:VEVENT
166 |
167 | BEGIN:VEVENT
168 | UID:20131002-0002-0007-0001-0000a95511fe
169 | DTSTART;VALUE=DATE:20131002
170 | SUMMARY:国庆节假期
171 | DESCRIPTION:假期第2天 / 共7天
172 | END:VEVENT
173 |
174 | BEGIN:VEVENT
175 | UID:20131003-0003-0007-0001-0000a95511fe
176 | DTSTART;VALUE=DATE:20131003
177 | SUMMARY:国庆节假期
178 | DESCRIPTION:假期第3天 / 共7天
179 | END:VEVENT
180 |
181 | BEGIN:VEVENT
182 | UID:20131004-0004-0007-0001-0000a95511fe
183 | DTSTART;VALUE=DATE:20131004
184 | SUMMARY:国庆节假期
185 | DESCRIPTION:假期第4天 / 共7天
186 | END:VEVENT
187 |
188 | BEGIN:VEVENT
189 | UID:20131005-0005-0007-0001-0000a95511fe
190 | DTSTART;VALUE=DATE:20131005
191 | SUMMARY:国庆节假期
192 | DESCRIPTION:假期第5天 / 共7天
193 | END:VEVENT
194 |
195 | BEGIN:VEVENT
196 | UID:20131006-0006-0007-0001-0000a95511fe
197 | DTSTART;VALUE=DATE:20131006
198 | SUMMARY:国庆节假期
199 | DESCRIPTION:假期第6天 / 共7天
200 | END:VEVENT
201 |
202 | BEGIN:VEVENT
203 | UID:20131007-0007-0007-0001-0000a95511fe
204 | DTSTART;VALUE=DATE:20131007
205 | SUMMARY:国庆节假期
206 | DESCRIPTION:假期第7天 / 共7天
207 | END:VEVENT
208 |
209 | BEGIN:VEVENT
210 | UID:20140101-0001-0001-0001-0000a95511fe
211 | DTSTART;VALUE=DATE:20140101
212 | SUMMARY:元旦假期
213 | DESCRIPTION:假期第1天 / 共1天
214 | END:VEVENT
215 |
216 | BEGIN:VEVENT
217 | UID:20140131-0001-0007-0001-0000a95511fe
218 | DTSTART;VALUE=DATE:20140131
219 | SUMMARY:春节假期
220 | DESCRIPTION:假期第1天 / 共7天
221 | END:VEVENT
222 |
223 | BEGIN:VEVENT
224 | UID:20140201-0002-0007-0001-0000a95511fe
225 | DTSTART;VALUE=DATE:20140201
226 | SUMMARY:春节假期
227 | DESCRIPTION:假期第2天 / 共7天
228 | END:VEVENT
229 |
230 | BEGIN:VEVENT
231 | UID:20140202-0003-0007-0001-0000a95511fe
232 | DTSTART;VALUE=DATE:20140202
233 | SUMMARY:春节假期
234 | DESCRIPTION:假期第3天 / 共7天
235 | END:VEVENT
236 |
237 | BEGIN:VEVENT
238 | UID:20140203-0004-0007-0001-0000a95511fe
239 | DTSTART;VALUE=DATE:20140203
240 | SUMMARY:春节假期
241 | DESCRIPTION:假期第4天 / 共7天
242 | END:VEVENT
243 |
244 | BEGIN:VEVENT
245 | UID:20140204-0005-0007-0001-0000a95511fe
246 | DTSTART;VALUE=DATE:20140204
247 | SUMMARY:春节假期
248 | DESCRIPTION:假期第5天 / 共7天
249 | END:VEVENT
250 |
251 | BEGIN:VEVENT
252 | UID:20140205-0006-0007-0001-0000a95511fe
253 | DTSTART;VALUE=DATE:20140205
254 | SUMMARY:春节假期
255 | DESCRIPTION:假期第6天 / 共7天
256 | END:VEVENT
257 |
258 | BEGIN:VEVENT
259 | UID:20140206-0007-0007-0001-0000a95511fe
260 | DTSTART;VALUE=DATE:20140206
261 | SUMMARY:春节假期
262 | DESCRIPTION:假期第7天 / 共7天
263 | END:VEVENT
264 |
265 | BEGIN:VEVENT
266 | UID:20140405-0001-0003-0001-0000a95511fe
267 | DTSTART;VALUE=DATE:20140405
268 | SUMMARY:清明节假期
269 | DESCRIPTION:假期第1天 / 共3天
270 | END:VEVENT
271 |
272 | BEGIN:VEVENT
273 | UID:20140406-0002-0003-0001-0000a95511fe
274 | DTSTART;VALUE=DATE:20140406
275 | SUMMARY:清明节假期
276 | DESCRIPTION:假期第2天 / 共3天
277 | END:VEVENT
278 |
279 | BEGIN:VEVENT
280 | UID:20140407-0003-0003-0001-0000a95511fe
281 | DTSTART;VALUE=DATE:20140407
282 | SUMMARY:清明节假期
283 | DESCRIPTION:假期第3天 / 共3天
284 | END:VEVENT
285 |
286 | BEGIN:VEVENT
287 | UID:20140501-0001-0003-0001-0000a95511fe
288 | DTSTART;VALUE=DATE:20140501
289 | SUMMARY:劳动节假期
290 | DESCRIPTION:假期第1天 / 共3天
291 | END:VEVENT
292 |
293 | BEGIN:VEVENT
294 | UID:20140502-0002-0003-0001-0000a95511fe
295 | DTSTART;VALUE=DATE:20140502
296 | SUMMARY:劳动节假期
297 | DESCRIPTION:假期第2天 / 共3天
298 | END:VEVENT
299 |
300 | BEGIN:VEVENT
301 | UID:20140503-0003-0003-0001-0000a95511fe
302 | DTSTART;VALUE=DATE:20140503
303 | SUMMARY:劳动节假期
304 | DESCRIPTION:假期第3天 / 共3天
305 | END:VEVENT
306 |
307 | BEGIN:VEVENT
308 | UID:20140531-0001-0003-0001-0000a95511fe
309 | DTSTART;VALUE=DATE:20140531
310 | SUMMARY:端午节假期
311 | DESCRIPTION:假期第1天 / 共3天
312 | END:VEVENT
313 |
314 | BEGIN:VEVENT
315 | UID:20140601-0002-0003-0001-0000a95511fe
316 | DTSTART;VALUE=DATE:20140601
317 | SUMMARY:端午节假期
318 | DESCRIPTION:假期第2天 / 共3天
319 | END:VEVENT
320 |
321 | BEGIN:VEVENT
322 | UID:20140602-0003-0003-0001-0000a95511fe
323 | DTSTART;VALUE=DATE:20140602
324 | SUMMARY:端午节假期
325 | DESCRIPTION:假期第3天 / 共3天
326 | END:VEVENT
327 |
328 | BEGIN:VEVENT
329 | UID:20140906-0001-0003-0001-0000a95511fe
330 | DTSTART;VALUE=DATE:20140906
331 | SUMMARY:中秋节假期
332 | DESCRIPTION:假期第1天 / 共3天
333 | END:VEVENT
334 |
335 | BEGIN:VEVENT
336 | UID:20140907-0002-0003-0001-0000a95511fe
337 | DTSTART;VALUE=DATE:20140907
338 | SUMMARY:中秋节假期
339 | DESCRIPTION:假期第2天 / 共3天
340 | END:VEVENT
341 |
342 | BEGIN:VEVENT
343 | UID:20140908-0003-0003-0001-0000a95511fe
344 | DTSTART;VALUE=DATE:20140908
345 | SUMMARY:中秋节假期
346 | DESCRIPTION:假期第3天 / 共3天
347 | END:VEVENT
348 |
349 | BEGIN:VEVENT
350 | UID:20141001-0001-0007-0001-0000a95511fe
351 | DTSTART;VALUE=DATE:20141001
352 | SUMMARY:国庆节假期
353 | DESCRIPTION:假期第1天 / 共7天
354 | END:VEVENT
355 |
356 | BEGIN:VEVENT
357 | UID:20141002-0002-0007-0001-0000a95511fe
358 | DTSTART;VALUE=DATE:20141002
359 | SUMMARY:国庆节假期
360 | DESCRIPTION:假期第2天 / 共7天
361 | END:VEVENT
362 |
363 | BEGIN:VEVENT
364 | UID:20141003-0003-0007-0001-0000a95511fe
365 | DTSTART;VALUE=DATE:20141003
366 | SUMMARY:国庆节假期
367 | DESCRIPTION:假期第3天 / 共7天
368 | END:VEVENT
369 |
370 | BEGIN:VEVENT
371 | UID:20141004-0004-0007-0001-0000a95511fe
372 | DTSTART;VALUE=DATE:20141004
373 | SUMMARY:国庆节假期
374 | DESCRIPTION:假期第4天 / 共7天
375 | END:VEVENT
376 |
377 | BEGIN:VEVENT
378 | UID:20141005-0005-0007-0001-0000a95511fe
379 | DTSTART;VALUE=DATE:20141005
380 | SUMMARY:国庆节假期
381 | DESCRIPTION:假期第5天 / 共7天
382 | END:VEVENT
383 |
384 | BEGIN:VEVENT
385 | UID:20141006-0006-0007-0001-0000a95511fe
386 | DTSTART;VALUE=DATE:20141006
387 | SUMMARY:国庆节假期
388 | DESCRIPTION:假期第6天 / 共7天
389 | END:VEVENT
390 |
391 | BEGIN:VEVENT
392 | UID:20141007-0007-0007-0001-0000a95511fe
393 | DTSTART;VALUE=DATE:20141007
394 | SUMMARY:国庆节假期
395 | DESCRIPTION:假期第7天 / 共7天
396 | END:VEVENT
397 |
398 | BEGIN:VEVENT
399 | UID:20150101-0001-0003-0001-0000a95511fe
400 | DTSTART;VALUE=DATE:20150101
401 | SUMMARY:元旦假期
402 | DESCRIPTION:假期第1天 / 共3天
403 | END:VEVENT
404 |
405 | BEGIN:VEVENT
406 | UID:20150102-0002-0003-0001-0000a95511fe
407 | DTSTART;VALUE=DATE:20150102
408 | SUMMARY:元旦假期
409 | DESCRIPTION:假期第2天 / 共3天
410 | END:VEVENT
411 |
412 | BEGIN:VEVENT
413 | UID:20150103-0003-0003-0001-0000a95511fe
414 | DTSTART;VALUE=DATE:20150103
415 | SUMMARY:元旦假期
416 | DESCRIPTION:假期第3天 / 共3天
417 | END:VEVENT
418 |
419 | BEGIN:VEVENT
420 | UID:20150218-0001-0007-0001-0000a95511fe
421 | DTSTART;VALUE=DATE:20150218
422 | SUMMARY:春节假期
423 | DESCRIPTION:假期第1天 / 共7天
424 | END:VEVENT
425 |
426 | BEGIN:VEVENT
427 | UID:20150219-0002-0007-0001-0000a95511fe
428 | DTSTART;VALUE=DATE:20150219
429 | SUMMARY:春节假期
430 | DESCRIPTION:假期第2天 / 共7天
431 | END:VEVENT
432 |
433 | BEGIN:VEVENT
434 | UID:20150220-0003-0007-0001-0000a95511fe
435 | DTSTART;VALUE=DATE:20150220
436 | SUMMARY:春节假期
437 | DESCRIPTION:假期第3天 / 共7天
438 | END:VEVENT
439 |
440 | BEGIN:VEVENT
441 | UID:20150221-0004-0007-0001-0000a95511fe
442 | DTSTART;VALUE=DATE:20150221
443 | SUMMARY:春节假期
444 | DESCRIPTION:假期第4天 / 共7天
445 | END:VEVENT
446 |
447 | BEGIN:VEVENT
448 | UID:20150222-0005-0007-0001-0000a95511fe
449 | DTSTART;VALUE=DATE:20150222
450 | SUMMARY:春节假期
451 | DESCRIPTION:假期第5天 / 共7天
452 | END:VEVENT
453 |
454 | BEGIN:VEVENT
455 | UID:20150223-0006-0007-0001-0000a95511fe
456 | DTSTART;VALUE=DATE:20150223
457 | SUMMARY:春节假期
458 | DESCRIPTION:假期第6天 / 共7天
459 | END:VEVENT
460 |
461 | BEGIN:VEVENT
462 | UID:20150224-0007-0007-0001-0000a95511fe
463 | DTSTART;VALUE=DATE:20150224
464 | SUMMARY:春节假期
465 | DESCRIPTION:假期第7天 / 共7天
466 | END:VEVENT
467 |
468 | BEGIN:VEVENT
469 | UID:20150404-0001-0003-0001-0000a95511fe
470 | DTSTART;VALUE=DATE:20150404
471 | SUMMARY:清明节假期
472 | DESCRIPTION:假期第1天 / 共3天
473 | END:VEVENT
474 |
475 | BEGIN:VEVENT
476 | UID:20150405-0002-0003-0001-0000a95511fe
477 | DTSTART;VALUE=DATE:20150405
478 | SUMMARY:清明节假期
479 | DESCRIPTION:假期第2天 / 共3天
480 | END:VEVENT
481 |
482 | BEGIN:VEVENT
483 | UID:20150406-0003-0003-0001-0000a95511fe
484 | DTSTART;VALUE=DATE:20150406
485 | SUMMARY:清明节假期
486 | DESCRIPTION:假期第3天 / 共3天
487 | END:VEVENT
488 |
489 | BEGIN:VEVENT
490 | UID:20150501-0001-0003-0001-0000a95511fe
491 | DTSTART;VALUE=DATE:20150501
492 | SUMMARY:劳动节假期
493 | DESCRIPTION:假期第1天 / 共3天
494 | END:VEVENT
495 |
496 | BEGIN:VEVENT
497 | UID:20150502-0002-0003-0001-0000a95511fe
498 | DTSTART;VALUE=DATE:20150502
499 | SUMMARY:劳动节假期
500 | DESCRIPTION:假期第2天 / 共3天
501 | END:VEVENT
502 |
503 | BEGIN:VEVENT
504 | UID:20150503-0003-0003-0001-0000a95511fe
505 | DTSTART;VALUE=DATE:20150503
506 | SUMMARY:劳动节假期
507 | DESCRIPTION:假期第3天 / 共3天
508 | END:VEVENT
509 |
510 | BEGIN:VEVENT
511 | UID:20150620-0001-0003-0001-0000a95511fe
512 | DTSTART;VALUE=DATE:20150620
513 | SUMMARY:端午节假期
514 | DESCRIPTION:假期第1天 / 共3天
515 | END:VEVENT
516 |
517 | BEGIN:VEVENT
518 | UID:20150621-0002-0003-0001-0000a95511fe
519 | DTSTART;VALUE=DATE:20150621
520 | SUMMARY:端午节假期
521 | DESCRIPTION:假期第2天 / 共3天
522 | END:VEVENT
523 |
524 | BEGIN:VEVENT
525 | UID:20150622-0003-0003-0001-0000a95511fe
526 | DTSTART;VALUE=DATE:20150622
527 | SUMMARY:端午节假期
528 | DESCRIPTION:假期第3天 / 共3天
529 | END:VEVENT
530 |
531 | BEGIN:VEVENT
532 | UID:20150927-0001-0001-0001-0000a95511fe
533 | DTSTART;VALUE=DATE:20150927
534 | SUMMARY:中秋节假期
535 | DESCRIPTION:假期第1天 / 共1天
536 | END:VEVENT
537 |
538 | BEGIN:VEVENT
539 | UID:20151001-0001-0007-0001-0000a95511fe
540 | DTSTART;VALUE=DATE:20151001
541 | SUMMARY:国庆节假期
542 | DESCRIPTION:假期第1天 / 共7天
543 | END:VEVENT
544 |
545 | BEGIN:VEVENT
546 | UID:20151002-0002-0007-0001-0000a95511fe
547 | DTSTART;VALUE=DATE:20151002
548 | SUMMARY:国庆节假期
549 | DESCRIPTION:假期第2天 / 共7天
550 | END:VEVENT
551 |
552 | BEGIN:VEVENT
553 | UID:20151003-0003-0007-0001-0000a95511fe
554 | DTSTART;VALUE=DATE:20151003
555 | SUMMARY:国庆节假期
556 | DESCRIPTION:假期第3天 / 共7天
557 | END:VEVENT
558 |
559 | BEGIN:VEVENT
560 | UID:20151004-0004-0007-0001-0000a95511fe
561 | DTSTART;VALUE=DATE:20151004
562 | SUMMARY:国庆节假期
563 | DESCRIPTION:假期第4天 / 共7天
564 | END:VEVENT
565 |
566 | BEGIN:VEVENT
567 | UID:20151005-0005-0007-0001-0000a95511fe
568 | DTSTART;VALUE=DATE:20151005
569 | SUMMARY:国庆节假期
570 | DESCRIPTION:假期第5天 / 共7天
571 | END:VEVENT
572 |
573 | BEGIN:VEVENT
574 | UID:20151006-0006-0007-0001-0000a95511fe
575 | DTSTART;VALUE=DATE:20151006
576 | SUMMARY:国庆节假期
577 | DESCRIPTION:假期第6天 / 共7天
578 | END:VEVENT
579 |
580 | BEGIN:VEVENT
581 | UID:20151007-0007-0007-0001-0000a95511fe
582 | DTSTART;VALUE=DATE:20151007
583 | SUMMARY:国庆节假期
584 | DESCRIPTION:假期第7天 / 共7天
585 | END:VEVENT
586 |
587 | BEGIN:VEVENT
588 | UID:20160101-0001-0003-0001-0000a95511fe
589 | DTSTART;VALUE=DATE:20160101
590 | SUMMARY:元旦假期
591 | DESCRIPTION:假期第1天 / 共3天
592 | END:VEVENT
593 |
594 | BEGIN:VEVENT
595 | UID:20160102-0002-0003-0001-0000a95511fe
596 | DTSTART;VALUE=DATE:20160102
597 | SUMMARY:元旦假期
598 | DESCRIPTION:假期第2天 / 共3天
599 | END:VEVENT
600 |
601 | BEGIN:VEVENT
602 | UID:20160103-0003-0003-0001-0000a95511fe
603 | DTSTART;VALUE=DATE:20160103
604 | SUMMARY:元旦假期
605 | DESCRIPTION:假期第3天 / 共3天
606 | END:VEVENT
607 |
608 | BEGIN:VEVENT
609 | UID:20160207-0001-0007-0001-0000a95511fe
610 | DTSTART;VALUE=DATE:20160207
611 | SUMMARY:春节假期
612 | DESCRIPTION:假期第1天 / 共7天
613 | END:VEVENT
614 |
615 | BEGIN:VEVENT
616 | UID:20160208-0002-0007-0001-0000a95511fe
617 | DTSTART;VALUE=DATE:20160208
618 | SUMMARY:春节假期
619 | DESCRIPTION:假期第2天 / 共7天
620 | END:VEVENT
621 |
622 | BEGIN:VEVENT
623 | UID:20160209-0003-0007-0001-0000a95511fe
624 | DTSTART;VALUE=DATE:20160209
625 | SUMMARY:春节假期
626 | DESCRIPTION:假期第3天 / 共7天
627 | END:VEVENT
628 |
629 | BEGIN:VEVENT
630 | UID:20160210-0004-0007-0001-0000a95511fe
631 | DTSTART;VALUE=DATE:20160210
632 | SUMMARY:春节假期
633 | DESCRIPTION:假期第4天 / 共7天
634 | END:VEVENT
635 |
636 | BEGIN:VEVENT
637 | UID:20160211-0005-0007-0001-0000a95511fe
638 | DTSTART;VALUE=DATE:20160211
639 | SUMMARY:春节假期
640 | DESCRIPTION:假期第5天 / 共7天
641 | END:VEVENT
642 |
643 | BEGIN:VEVENT
644 | UID:20160212-0006-0007-0001-0000a95511fe
645 | DTSTART;VALUE=DATE:20160212
646 | SUMMARY:春节假期
647 | DESCRIPTION:假期第6天 / 共7天
648 | END:VEVENT
649 |
650 | BEGIN:VEVENT
651 | UID:20160213-0007-0007-0001-0000a95511fe
652 | DTSTART;VALUE=DATE:20160213
653 | SUMMARY:春节假期
654 | DESCRIPTION:假期第7天 / 共7天
655 | END:VEVENT
656 |
657 | BEGIN:VEVENT
658 | UID:20160402-0001-0003-0001-0000a95511fe
659 | DTSTART;VALUE=DATE:20160402
660 | SUMMARY:清明节假期
661 | DESCRIPTION:假期第1天 / 共3天
662 | END:VEVENT
663 |
664 | BEGIN:VEVENT
665 | UID:20160403-0002-0003-0001-0000a95511fe
666 | DTSTART;VALUE=DATE:20160403
667 | SUMMARY:清明节假期
668 | DESCRIPTION:假期第2天 / 共3天
669 | END:VEVENT
670 |
671 | BEGIN:VEVENT
672 | UID:20160404-0003-0003-0001-0000a95511fe
673 | DTSTART;VALUE=DATE:20160404
674 | SUMMARY:清明节假期
675 | DESCRIPTION:假期第3天 / 共3天
676 | END:VEVENT
677 |
678 | BEGIN:VEVENT
679 | UID:20160430-0001-0003-0001-0000a95511fe
680 | DTSTART;VALUE=DATE:20160430
681 | SUMMARY:劳动节假期
682 | DESCRIPTION:假期第1天 / 共3天
683 | END:VEVENT
684 |
685 | BEGIN:VEVENT
686 | UID:20160501-0002-0003-0001-0000a95511fe
687 | DTSTART;VALUE=DATE:20160501
688 | SUMMARY:劳动节假期
689 | DESCRIPTION:假期第2天 / 共3天
690 | END:VEVENT
691 |
692 | BEGIN:VEVENT
693 | UID:20160502-0003-0003-0001-0000a95511fe
694 | DTSTART;VALUE=DATE:20160502
695 | SUMMARY:劳动节假期
696 | DESCRIPTION:假期第3天 / 共3天
697 | END:VEVENT
698 |
699 | BEGIN:VEVENT
700 | UID:20160609-0001-0003-0001-0000a95511fe
701 | DTSTART;VALUE=DATE:20160609
702 | SUMMARY:端午节假期
703 | DESCRIPTION:假期第1天 / 共3天
704 | END:VEVENT
705 |
706 | BEGIN:VEVENT
707 | UID:20160610-0002-0003-0001-0000a95511fe
708 | DTSTART;VALUE=DATE:20160610
709 | SUMMARY:端午节假期
710 | DESCRIPTION:假期第2天 / 共3天
711 | END:VEVENT
712 |
713 | BEGIN:VEVENT
714 | UID:20160611-0003-0003-0001-0000a95511fe
715 | DTSTART;VALUE=DATE:20160611
716 | SUMMARY:端午节假期
717 | DESCRIPTION:假期第3天 / 共3天
718 | END:VEVENT
719 |
720 | BEGIN:VEVENT
721 | UID:20160915-0001-0003-0001-0000a95511fe
722 | DTSTART;VALUE=DATE:20160915
723 | SUMMARY:中秋节假期
724 | DESCRIPTION:假期第1天 / 共3天
725 | END:VEVENT
726 |
727 | BEGIN:VEVENT
728 | UID:20160916-0002-0003-0001-0000a95511fe
729 | DTSTART;VALUE=DATE:20160916
730 | SUMMARY:中秋节假期
731 | DESCRIPTION:假期第2天 / 共3天
732 | END:VEVENT
733 |
734 | BEGIN:VEVENT
735 | UID:20160917-0003-0003-0001-0000a95511fe
736 | DTSTART;VALUE=DATE:20160917
737 | SUMMARY:中秋节假期
738 | DESCRIPTION:假期第3天 / 共3天
739 | END:VEVENT
740 |
741 | BEGIN:VEVENT
742 | UID:20161001-0001-0007-0001-0000a95511fe
743 | DTSTART;VALUE=DATE:20161001
744 | SUMMARY:国庆节假期
745 | DESCRIPTION:假期第1天 / 共7天
746 | END:VEVENT
747 |
748 | BEGIN:VEVENT
749 | UID:20161002-0002-0007-0001-0000a95511fe
750 | DTSTART;VALUE=DATE:20161002
751 | SUMMARY:国庆节假期
752 | DESCRIPTION:假期第2天 / 共7天
753 | END:VEVENT
754 |
755 | BEGIN:VEVENT
756 | UID:20161003-0003-0007-0001-0000a95511fe
757 | DTSTART;VALUE=DATE:20161003
758 | SUMMARY:国庆节假期
759 | DESCRIPTION:假期第3天 / 共7天
760 | END:VEVENT
761 |
762 | BEGIN:VEVENT
763 | UID:20161004-0004-0007-0001-0000a95511fe
764 | DTSTART;VALUE=DATE:20161004
765 | SUMMARY:国庆节假期
766 | DESCRIPTION:假期第4天 / 共7天
767 | END:VEVENT
768 |
769 | BEGIN:VEVENT
770 | UID:20161005-0005-0007-0001-0000a95511fe
771 | DTSTART;VALUE=DATE:20161005
772 | SUMMARY:国庆节假期
773 | DESCRIPTION:假期第5天 / 共7天
774 | END:VEVENT
775 |
776 | BEGIN:VEVENT
777 | UID:20161006-0006-0007-0001-0000a95511fe
778 | DTSTART;VALUE=DATE:20161006
779 | SUMMARY:国庆节假期
780 | DESCRIPTION:假期第6天 / 共7天
781 | END:VEVENT
782 |
783 | BEGIN:VEVENT
784 | UID:20161007-0007-0007-0001-0000a95511fe
785 | DTSTART;VALUE=DATE:20161007
786 | SUMMARY:国庆节假期
787 | DESCRIPTION:假期第7天 / 共7天
788 | END:VEVENT
789 |
790 | BEGIN:VEVENT
791 | UID:20161231-0001-0003-0001-0000a95511fe
792 | DTSTART;VALUE=DATE:20161231
793 | SUMMARY:元旦假期
794 | DESCRIPTION:假期第1天 / 共3天
795 | END:VEVENT
796 |
797 | BEGIN:VEVENT
798 | UID:20170101-0002-0003-0001-0000a95511fe
799 | DTSTART;VALUE=DATE:20170101
800 | SUMMARY:元旦假期
801 | DESCRIPTION:假期第2天 / 共3天
802 | END:VEVENT
803 |
804 | BEGIN:VEVENT
805 | UID:20170102-0003-0003-0001-0000a95511fe
806 | DTSTART;VALUE=DATE:20170102
807 | SUMMARY:元旦假期
808 | DESCRIPTION:假期第3天 / 共3天
809 | END:VEVENT
810 |
811 | BEGIN:VEVENT
812 | UID:20170127-0001-0007-0001-0000a95511fe
813 | DTSTART;VALUE=DATE:20170127
814 | SUMMARY:春节假期
815 | DESCRIPTION:假期第1天 / 共7天
816 | END:VEVENT
817 |
818 | BEGIN:VEVENT
819 | UID:20170128-0002-0007-0001-0000a95511fe
820 | DTSTART;VALUE=DATE:20170128
821 | SUMMARY:春节假期
822 | DESCRIPTION:假期第2天 / 共7天
823 | END:VEVENT
824 |
825 | BEGIN:VEVENT
826 | UID:20170129-0003-0007-0001-0000a95511fe
827 | DTSTART;VALUE=DATE:20170129
828 | SUMMARY:春节假期
829 | DESCRIPTION:假期第3天 / 共7天
830 | END:VEVENT
831 |
832 | BEGIN:VEVENT
833 | UID:20170130-0004-0007-0001-0000a95511fe
834 | DTSTART;VALUE=DATE:20170130
835 | SUMMARY:春节假期
836 | DESCRIPTION:假期第4天 / 共7天
837 | END:VEVENT
838 |
839 | BEGIN:VEVENT
840 | UID:20170131-0005-0007-0001-0000a95511fe
841 | DTSTART;VALUE=DATE:20170131
842 | SUMMARY:春节假期
843 | DESCRIPTION:假期第5天 / 共7天
844 | END:VEVENT
845 |
846 | BEGIN:VEVENT
847 | UID:20170201-0006-0007-0001-0000a95511fe
848 | DTSTART;VALUE=DATE:20170201
849 | SUMMARY:春节假期
850 | DESCRIPTION:假期第6天 / 共7天
851 | END:VEVENT
852 |
853 | BEGIN:VEVENT
854 | UID:20170202-0007-0007-0001-0000a95511fe
855 | DTSTART;VALUE=DATE:20170202
856 | SUMMARY:春节假期
857 | DESCRIPTION:假期第7天 / 共7天
858 | END:VEVENT
859 |
860 | BEGIN:VEVENT
861 | UID:20170402-0001-0003-0001-0000a95511fe
862 | DTSTART;VALUE=DATE:20170402
863 | SUMMARY:清明节假期
864 | DESCRIPTION:假期第1天 / 共3天
865 | END:VEVENT
866 |
867 | BEGIN:VEVENT
868 | UID:20170403-0002-0003-0001-0000a95511fe
869 | DTSTART;VALUE=DATE:20170403
870 | SUMMARY:清明节假期
871 | DESCRIPTION:假期第2天 / 共3天
872 | END:VEVENT
873 |
874 | BEGIN:VEVENT
875 | UID:20170404-0003-0003-0001-0000a95511fe
876 | DTSTART;VALUE=DATE:20170404
877 | SUMMARY:清明节假期
878 | DESCRIPTION:假期第3天 / 共3天
879 | END:VEVENT
880 |
881 | BEGIN:VEVENT
882 | UID:20170429-0001-0003-0001-0000a95511fe
883 | DTSTART;VALUE=DATE:20170429
884 | SUMMARY:劳动节假期
885 | DESCRIPTION:假期第1天 / 共3天
886 | END:VEVENT
887 |
888 | BEGIN:VEVENT
889 | UID:20170430-0002-0003-0001-0000a95511fe
890 | DTSTART;VALUE=DATE:20170430
891 | SUMMARY:劳动节假期
892 | DESCRIPTION:假期第2天 / 共3天
893 | END:VEVENT
894 |
895 | BEGIN:VEVENT
896 | UID:20170501-0003-0003-0001-0000a95511fe
897 | DTSTART;VALUE=DATE:20170501
898 | SUMMARY:劳动节假期
899 | DESCRIPTION:假期第3天 / 共3天
900 | END:VEVENT
901 |
902 | BEGIN:VEVENT
903 | UID:20170528-0001-0003-0001-0000a95511fe
904 | DTSTART;VALUE=DATE:20170528
905 | SUMMARY:端午节假期
906 | DESCRIPTION:假期第1天 / 共3天
907 | END:VEVENT
908 |
909 | BEGIN:VEVENT
910 | UID:20170529-0002-0003-0001-0000a95511fe
911 | DTSTART;VALUE=DATE:20170529
912 | SUMMARY:端午节假期
913 | DESCRIPTION:假期第2天 / 共3天
914 | END:VEVENT
915 |
916 | BEGIN:VEVENT
917 | UID:20170530-0003-0003-0001-0000a95511fe
918 | DTSTART;VALUE=DATE:20170530
919 | SUMMARY:端午节假期
920 | DESCRIPTION:假期第3天 / 共3天
921 | END:VEVENT
922 |
923 | BEGIN:VEVENT
924 | UID:20171001-0001-0008-0001-0000a95511fe
925 | DTSTART;VALUE=DATE:20171001
926 | SUMMARY:中秋节、国庆节假期
927 | DESCRIPTION:假期第1天 / 共8天
928 | END:VEVENT
929 |
930 | BEGIN:VEVENT
931 | UID:20171002-0002-0008-0001-0000a95511fe
932 | DTSTART;VALUE=DATE:20171002
933 | SUMMARY:中秋节、国庆节假期
934 | DESCRIPTION:假期第2天 / 共8天
935 | END:VEVENT
936 |
937 | BEGIN:VEVENT
938 | UID:20171003-0003-0008-0001-0000a95511fe
939 | DTSTART;VALUE=DATE:20171003
940 | SUMMARY:中秋节、国庆节假期
941 | DESCRIPTION:假期第3天 / 共8天
942 | END:VEVENT
943 |
944 | BEGIN:VEVENT
945 | UID:20171004-0004-0008-0001-0000a95511fe
946 | DTSTART;VALUE=DATE:20171004
947 | SUMMARY:中秋节、国庆节假期
948 | DESCRIPTION:假期第4天 / 共8天
949 | END:VEVENT
950 |
951 | BEGIN:VEVENT
952 | UID:20171005-0005-0008-0001-0000a95511fe
953 | DTSTART;VALUE=DATE:20171005
954 | SUMMARY:中秋节、国庆节假期
955 | DESCRIPTION:假期第5天 / 共8天
956 | END:VEVENT
957 |
958 | BEGIN:VEVENT
959 | UID:20171006-0006-0008-0001-0000a95511fe
960 | DTSTART;VALUE=DATE:20171006
961 | SUMMARY:中秋节、国庆节假期
962 | DESCRIPTION:假期第6天 / 共8天
963 | END:VEVENT
964 |
965 | BEGIN:VEVENT
966 | UID:20171007-0007-0008-0001-0000a95511fe
967 | DTSTART;VALUE=DATE:20171007
968 | SUMMARY:中秋节、国庆节假期
969 | DESCRIPTION:假期第7天 / 共8天
970 | END:VEVENT
971 |
972 | BEGIN:VEVENT
973 | UID:20171008-0008-0008-0001-0000a95511fe
974 | DTSTART;VALUE=DATE:20171008
975 | SUMMARY:中秋节、国庆节假期
976 | DESCRIPTION:假期第8天 / 共8天
977 | END:VEVENT
978 |
979 | BEGIN:VEVENT
980 | UID:20171230-0001-0003-0001-0000a95511fe
981 | DTSTART;VALUE=DATE:20171230
982 | SUMMARY:元旦假期
983 | DESCRIPTION:假期第1天 / 共3天
984 | END:VEVENT
985 |
986 | BEGIN:VEVENT
987 | UID:20171231-0002-0003-0001-0000a95511fe
988 | DTSTART;VALUE=DATE:20171231
989 | SUMMARY:元旦假期
990 | DESCRIPTION:假期第2天 / 共3天
991 | END:VEVENT
992 |
993 | BEGIN:VEVENT
994 | UID:20180101-0003-0003-0001-0000a95511fe
995 | DTSTART;VALUE=DATE:20180101
996 | SUMMARY:元旦假期
997 | DESCRIPTION:假期第3天 / 共3天
998 | END:VEVENT
999 |
1000 | BEGIN:VEVENT
1001 | UID:20180215-0001-0007-0001-0000a95511fe
1002 | DTSTART;VALUE=DATE:20180215
1003 | SUMMARY:春节假期
1004 | DESCRIPTION:假期第1天 / 共7天
1005 | END:VEVENT
1006 |
1007 | BEGIN:VEVENT
1008 | UID:20180216-0002-0007-0001-0000a95511fe
1009 | DTSTART;VALUE=DATE:20180216
1010 | SUMMARY:春节假期
1011 | DESCRIPTION:假期第2天 / 共7天
1012 | END:VEVENT
1013 |
1014 | BEGIN:VEVENT
1015 | UID:20180217-0003-0007-0001-0000a95511fe
1016 | DTSTART;VALUE=DATE:20180217
1017 | SUMMARY:春节假期
1018 | DESCRIPTION:假期第3天 / 共7天
1019 | END:VEVENT
1020 |
1021 | BEGIN:VEVENT
1022 | UID:20180218-0004-0007-0001-0000a95511fe
1023 | DTSTART;VALUE=DATE:20180218
1024 | SUMMARY:春节假期
1025 | DESCRIPTION:假期第4天 / 共7天
1026 | END:VEVENT
1027 |
1028 | BEGIN:VEVENT
1029 | UID:20180219-0005-0007-0001-0000a95511fe
1030 | DTSTART;VALUE=DATE:20180219
1031 | SUMMARY:春节假期
1032 | DESCRIPTION:假期第5天 / 共7天
1033 | END:VEVENT
1034 |
1035 | BEGIN:VEVENT
1036 | UID:20180220-0006-0007-0001-0000a95511fe
1037 | DTSTART;VALUE=DATE:20180220
1038 | SUMMARY:春节假期
1039 | DESCRIPTION:假期第6天 / 共7天
1040 | END:VEVENT
1041 |
1042 | BEGIN:VEVENT
1043 | UID:20180221-0007-0007-0001-0000a95511fe
1044 | DTSTART;VALUE=DATE:20180221
1045 | SUMMARY:春节假期
1046 | DESCRIPTION:假期第7天 / 共7天
1047 | END:VEVENT
1048 |
1049 | BEGIN:VEVENT
1050 | UID:20180405-0001-0003-0001-0000a95511fe
1051 | DTSTART;VALUE=DATE:20180405
1052 | SUMMARY:清明节假期
1053 | DESCRIPTION:假期第1天 / 共3天
1054 | END:VEVENT
1055 |
1056 | BEGIN:VEVENT
1057 | UID:20180406-0002-0003-0001-0000a95511fe
1058 | DTSTART;VALUE=DATE:20180406
1059 | SUMMARY:清明节假期
1060 | DESCRIPTION:假期第2天 / 共3天
1061 | END:VEVENT
1062 |
1063 | BEGIN:VEVENT
1064 | UID:20180407-0003-0003-0001-0000a95511fe
1065 | DTSTART;VALUE=DATE:20180407
1066 | SUMMARY:清明节假期
1067 | DESCRIPTION:假期第3天 / 共3天
1068 | END:VEVENT
1069 |
1070 | BEGIN:VEVENT
1071 | UID:20180429-0001-0003-0001-0000a95511fe
1072 | DTSTART;VALUE=DATE:20180429
1073 | SUMMARY:劳动节假期
1074 | DESCRIPTION:假期第1天 / 共3天
1075 | END:VEVENT
1076 |
1077 | BEGIN:VEVENT
1078 | UID:20180430-0002-0003-0001-0000a95511fe
1079 | DTSTART;VALUE=DATE:20180430
1080 | SUMMARY:劳动节假期
1081 | DESCRIPTION:假期第2天 / 共3天
1082 | END:VEVENT
1083 |
1084 | BEGIN:VEVENT
1085 | UID:20180501-0003-0003-0001-0000a95511fe
1086 | DTSTART;VALUE=DATE:20180501
1087 | SUMMARY:劳动节假期
1088 | DESCRIPTION:假期第3天 / 共3天
1089 | END:VEVENT
1090 |
1091 | BEGIN:VEVENT
1092 | UID:20180616-0001-0003-0001-0000a95511fe
1093 | DTSTART;VALUE=DATE:20180616
1094 | SUMMARY:端午节假期
1095 | DESCRIPTION:假期第1天 / 共3天
1096 | END:VEVENT
1097 |
1098 | BEGIN:VEVENT
1099 | UID:20180617-0002-0003-0001-0000a95511fe
1100 | DTSTART;VALUE=DATE:20180617
1101 | SUMMARY:端午节假期
1102 | DESCRIPTION:假期第2天 / 共3天
1103 | END:VEVENT
1104 |
1105 | BEGIN:VEVENT
1106 | UID:20180618-0003-0003-0001-0000a95511fe
1107 | DTSTART;VALUE=DATE:20180618
1108 | SUMMARY:端午节假期
1109 | DESCRIPTION:假期第3天 / 共3天
1110 | END:VEVENT
1111 |
1112 | BEGIN:VEVENT
1113 | UID:20180922-0001-0003-0001-0000a95511fe
1114 | DTSTART;VALUE=DATE:20180922
1115 | SUMMARY:中秋节假期
1116 | DESCRIPTION:假期第1天 / 共3天
1117 | END:VEVENT
1118 |
1119 | BEGIN:VEVENT
1120 | UID:20180923-0002-0003-0001-0000a95511fe
1121 | DTSTART;VALUE=DATE:20180923
1122 | SUMMARY:中秋节假期
1123 | DESCRIPTION:假期第2天 / 共3天
1124 | END:VEVENT
1125 |
1126 | BEGIN:VEVENT
1127 | UID:20180924-0003-0003-0001-0000a95511fe
1128 | DTSTART;VALUE=DATE:20180924
1129 | SUMMARY:中秋节假期
1130 | DESCRIPTION:假期第3天 / 共3天
1131 | END:VEVENT
1132 |
1133 | BEGIN:VEVENT
1134 | UID:20181001-0001-0007-0001-0000a95511fe
1135 | DTSTART;VALUE=DATE:20181001
1136 | SUMMARY:国庆节假期
1137 | DESCRIPTION:假期第1天 / 共7天
1138 | END:VEVENT
1139 |
1140 | BEGIN:VEVENT
1141 | UID:20181002-0002-0007-0001-0000a95511fe
1142 | DTSTART;VALUE=DATE:20181002
1143 | SUMMARY:国庆节假期
1144 | DESCRIPTION:假期第2天 / 共7天
1145 | END:VEVENT
1146 |
1147 | BEGIN:VEVENT
1148 | UID:20181003-0003-0007-0001-0000a95511fe
1149 | DTSTART;VALUE=DATE:20181003
1150 | SUMMARY:国庆节假期
1151 | DESCRIPTION:假期第3天 / 共7天
1152 | END:VEVENT
1153 |
1154 | BEGIN:VEVENT
1155 | UID:20181004-0004-0007-0001-0000a95511fe
1156 | DTSTART;VALUE=DATE:20181004
1157 | SUMMARY:国庆节假期
1158 | DESCRIPTION:假期第4天 / 共7天
1159 | END:VEVENT
1160 |
1161 | BEGIN:VEVENT
1162 | UID:20181005-0005-0007-0001-0000a95511fe
1163 | DTSTART;VALUE=DATE:20181005
1164 | SUMMARY:国庆节假期
1165 | DESCRIPTION:假期第5天 / 共7天
1166 | END:VEVENT
1167 |
1168 | BEGIN:VEVENT
1169 | UID:20181006-0006-0007-0001-0000a95511fe
1170 | DTSTART;VALUE=DATE:20181006
1171 | SUMMARY:国庆节假期
1172 | DESCRIPTION:假期第6天 / 共7天
1173 | END:VEVENT
1174 |
1175 | BEGIN:VEVENT
1176 | UID:20181007-0007-0007-0001-0000a95511fe
1177 | DTSTART;VALUE=DATE:20181007
1178 | SUMMARY:国庆节假期
1179 | DESCRIPTION:假期第7天 / 共7天
1180 | END:VEVENT
1181 |
1182 | BEGIN:VEVENT
1183 | UID:20181230-0001-0003-0001-0000a95511fe
1184 | DTSTART;VALUE=DATE:20181230
1185 | SUMMARY:元旦假期
1186 | DESCRIPTION:假期第1天 / 共3天
1187 | END:VEVENT
1188 |
1189 | BEGIN:VEVENT
1190 | UID:20181231-0002-0003-0001-0000a95511fe
1191 | DTSTART;VALUE=DATE:20181231
1192 | SUMMARY:元旦假期
1193 | DESCRIPTION:假期第2天 / 共3天
1194 | END:VEVENT
1195 |
1196 | BEGIN:VEVENT
1197 | UID:20190101-0003-0003-0001-0000a95511fe
1198 | DTSTART;VALUE=DATE:20190101
1199 | SUMMARY:元旦假期
1200 | DESCRIPTION:假期第3天 / 共3天
1201 | END:VEVENT
1202 |
1203 | BEGIN:VEVENT
1204 | UID:20190204-0001-0007-0001-0000a95511fe
1205 | DTSTART;VALUE=DATE:20190204
1206 | SUMMARY:春节假期
1207 | DESCRIPTION:假期第1天 / 共7天
1208 | END:VEVENT
1209 |
1210 | BEGIN:VEVENT
1211 | UID:20190205-0002-0007-0001-0000a95511fe
1212 | DTSTART;VALUE=DATE:20190205
1213 | SUMMARY:春节假期
1214 | DESCRIPTION:假期第2天 / 共7天
1215 | END:VEVENT
1216 |
1217 | BEGIN:VEVENT
1218 | UID:20190206-0003-0007-0001-0000a95511fe
1219 | DTSTART;VALUE=DATE:20190206
1220 | SUMMARY:春节假期
1221 | DESCRIPTION:假期第3天 / 共7天
1222 | END:VEVENT
1223 |
1224 | BEGIN:VEVENT
1225 | UID:20190207-0004-0007-0001-0000a95511fe
1226 | DTSTART;VALUE=DATE:20190207
1227 | SUMMARY:春节假期
1228 | DESCRIPTION:假期第4天 / 共7天
1229 | END:VEVENT
1230 |
1231 | BEGIN:VEVENT
1232 | UID:20190208-0005-0007-0001-0000a95511fe
1233 | DTSTART;VALUE=DATE:20190208
1234 | SUMMARY:春节假期
1235 | DESCRIPTION:假期第5天 / 共7天
1236 | END:VEVENT
1237 |
1238 | BEGIN:VEVENT
1239 | UID:20190209-0006-0007-0001-0000a95511fe
1240 | DTSTART;VALUE=DATE:20190209
1241 | SUMMARY:春节假期
1242 | DESCRIPTION:假期第6天 / 共7天
1243 | END:VEVENT
1244 |
1245 | BEGIN:VEVENT
1246 | UID:20190210-0007-0007-0001-0000a95511fe
1247 | DTSTART;VALUE=DATE:20190210
1248 | SUMMARY:春节假期
1249 | DESCRIPTION:假期第7天 / 共7天
1250 | END:VEVENT
1251 |
1252 | BEGIN:VEVENT
1253 | UID:20190405-0001-0003-0001-0000a95511fe
1254 | DTSTART;VALUE=DATE:20190405
1255 | SUMMARY:清明节假期
1256 | DESCRIPTION:假期第1天 / 共3天
1257 | END:VEVENT
1258 |
1259 | BEGIN:VEVENT
1260 | UID:20190406-0002-0003-0001-0000a95511fe
1261 | DTSTART;VALUE=DATE:20190406
1262 | SUMMARY:清明节假期
1263 | DESCRIPTION:假期第2天 / 共3天
1264 | END:VEVENT
1265 |
1266 | BEGIN:VEVENT
1267 | UID:20190407-0003-0003-0001-0000a95511fe
1268 | DTSTART;VALUE=DATE:20190407
1269 | SUMMARY:清明节假期
1270 | DESCRIPTION:假期第3天 / 共3天
1271 | END:VEVENT
1272 |
1273 | BEGIN:VEVENT
1274 | UID:20190501-0001-0001-0001-0000a95511fe
1275 | DTSTART;VALUE=DATE:20190501
1276 | SUMMARY:劳动节假期
1277 | DESCRIPTION:假期第1天 / 共1天
1278 | END:VEVENT
1279 |
1280 | BEGIN:VEVENT
1281 | UID:20190607-0001-0003-0001-0000a95511fe
1282 | DTSTART;VALUE=DATE:20190607
1283 | SUMMARY:端午节假期
1284 | DESCRIPTION:假期第1天 / 共3天
1285 | END:VEVENT
1286 |
1287 | BEGIN:VEVENT
1288 | UID:20190608-0002-0003-0001-0000a95511fe
1289 | DTSTART;VALUE=DATE:20190608
1290 | SUMMARY:端午节假期
1291 | DESCRIPTION:假期第2天 / 共3天
1292 | END:VEVENT
1293 |
1294 | BEGIN:VEVENT
1295 | UID:20190609-0003-0003-0001-0000a95511fe
1296 | DTSTART;VALUE=DATE:20190609
1297 | SUMMARY:端午节假期
1298 | DESCRIPTION:假期第3天 / 共3天
1299 | END:VEVENT
1300 |
1301 | BEGIN:VEVENT
1302 | UID:20190913-0001-0003-0001-0000a95511fe
1303 | DTSTART;VALUE=DATE:20190913
1304 | SUMMARY:中秋节假期
1305 | DESCRIPTION:假期第1天 / 共3天
1306 | END:VEVENT
1307 |
1308 | BEGIN:VEVENT
1309 | UID:20190914-0002-0003-0001-0000a95511fe
1310 | DTSTART;VALUE=DATE:20190914
1311 | SUMMARY:中秋节假期
1312 | DESCRIPTION:假期第2天 / 共3天
1313 | END:VEVENT
1314 |
1315 | BEGIN:VEVENT
1316 | UID:20190915-0003-0003-0001-0000a95511fe
1317 | DTSTART;VALUE=DATE:20190915
1318 | SUMMARY:中秋节假期
1319 | DESCRIPTION:假期第3天 / 共3天
1320 | END:VEVENT
1321 |
1322 | BEGIN:VEVENT
1323 | UID:20191001-0001-0007-0001-0000a95511fe
1324 | DTSTART;VALUE=DATE:20191001
1325 | SUMMARY:国庆节假期
1326 | DESCRIPTION:假期第1天 / 共7天
1327 | END:VEVENT
1328 |
1329 | BEGIN:VEVENT
1330 | UID:20191002-0002-0007-0001-0000a95511fe
1331 | DTSTART;VALUE=DATE:20191002
1332 | SUMMARY:国庆节假期
1333 | DESCRIPTION:假期第2天 / 共7天
1334 | END:VEVENT
1335 |
1336 | BEGIN:VEVENT
1337 | UID:20191003-0003-0007-0001-0000a95511fe
1338 | DTSTART;VALUE=DATE:20191003
1339 | SUMMARY:国庆节假期
1340 | DESCRIPTION:假期第3天 / 共7天
1341 | END:VEVENT
1342 |
1343 | BEGIN:VEVENT
1344 | UID:20191004-0004-0007-0001-0000a95511fe
1345 | DTSTART;VALUE=DATE:20191004
1346 | SUMMARY:国庆节假期
1347 | DESCRIPTION:假期第4天 / 共7天
1348 | END:VEVENT
1349 |
1350 | BEGIN:VEVENT
1351 | UID:20191005-0005-0007-0001-0000a95511fe
1352 | DTSTART;VALUE=DATE:20191005
1353 | SUMMARY:国庆节假期
1354 | DESCRIPTION:假期第5天 / 共7天
1355 | END:VEVENT
1356 |
1357 | BEGIN:VEVENT
1358 | UID:20191006-0006-0007-0001-0000a95511fe
1359 | DTSTART;VALUE=DATE:20191006
1360 | SUMMARY:国庆节假期
1361 | DESCRIPTION:假期第6天 / 共7天
1362 | END:VEVENT
1363 |
1364 | BEGIN:VEVENT
1365 | UID:20191007-0007-0007-0001-0000a95511fe
1366 | DTSTART;VALUE=DATE:20191007
1367 | SUMMARY:国庆节假期
1368 | DESCRIPTION:假期第7天 / 共7天
1369 | END:VEVENT
1370 |
1371 | BEGIN:VEVENT
1372 | UID:20200101-0001-0001-0001-0000a95511fe
1373 | DTSTART;VALUE=DATE:20200101
1374 | SUMMARY:元旦假期
1375 | DESCRIPTION:假期第1天 / 共1天
1376 | END:VEVENT
1377 |
1378 | BEGIN:VEVENT
1379 | UID:20200124-0001-0007-0001-0000a95511fe
1380 | DTSTART;VALUE=DATE:20200124
1381 | SUMMARY:春节假期
1382 | DESCRIPTION:假期第1天 / 共7天
1383 | END:VEVENT
1384 |
1385 | BEGIN:VEVENT
1386 | UID:20200125-0002-0007-0001-0000a95511fe
1387 | DTSTART;VALUE=DATE:20200125
1388 | SUMMARY:春节假期
1389 | DESCRIPTION:假期第2天 / 共7天
1390 | END:VEVENT
1391 |
1392 | BEGIN:VEVENT
1393 | UID:20200126-0003-0007-0001-0000a95511fe
1394 | DTSTART;VALUE=DATE:20200126
1395 | SUMMARY:春节假期
1396 | DESCRIPTION:假期第3天 / 共7天
1397 | END:VEVENT
1398 |
1399 | BEGIN:VEVENT
1400 | UID:20200127-0004-0007-0001-0000a95511fe
1401 | DTSTART;VALUE=DATE:20200127
1402 | SUMMARY:春节假期
1403 | DESCRIPTION:假期第4天 / 共7天
1404 | END:VEVENT
1405 |
1406 | BEGIN:VEVENT
1407 | UID:20200128-0005-0007-0001-0000a95511fe
1408 | DTSTART;VALUE=DATE:20200128
1409 | SUMMARY:春节假期
1410 | DESCRIPTION:假期第5天 / 共7天
1411 | END:VEVENT
1412 |
1413 | BEGIN:VEVENT
1414 | UID:20200129-0006-0007-0001-0000a95511fe
1415 | DTSTART;VALUE=DATE:20200129
1416 | SUMMARY:春节假期
1417 | DESCRIPTION:假期第6天 / 共7天
1418 | END:VEVENT
1419 |
1420 | BEGIN:VEVENT
1421 | UID:20200130-0007-0007-0001-0000a95511fe
1422 | DTSTART;VALUE=DATE:20200130
1423 | SUMMARY:春节假期
1424 | DESCRIPTION:假期第7天 / 共7天
1425 | END:VEVENT
1426 |
1427 | BEGIN:VEVENT
1428 | UID:20200404-0001-0003-0001-0000a95511fe
1429 | DTSTART;VALUE=DATE:20200404
1430 | SUMMARY:清明节假期
1431 | DESCRIPTION:假期第1天 / 共3天
1432 | END:VEVENT
1433 |
1434 | BEGIN:VEVENT
1435 | UID:20200405-0002-0003-0001-0000a95511fe
1436 | DTSTART;VALUE=DATE:20200405
1437 | SUMMARY:清明节假期
1438 | DESCRIPTION:假期第2天 / 共3天
1439 | END:VEVENT
1440 |
1441 | BEGIN:VEVENT
1442 | UID:20200406-0003-0003-0001-0000a95511fe
1443 | DTSTART;VALUE=DATE:20200406
1444 | SUMMARY:清明节假期
1445 | DESCRIPTION:假期第3天 / 共3天
1446 | END:VEVENT
1447 |
1448 | BEGIN:VEVENT
1449 | UID:20200501-0001-0005-0001-0000a95511fe
1450 | DTSTART;VALUE=DATE:20200501
1451 | SUMMARY:劳动节假期
1452 | DESCRIPTION:假期第1天 / 共5天
1453 | END:VEVENT
1454 |
1455 | BEGIN:VEVENT
1456 | UID:20200502-0002-0005-0001-0000a95511fe
1457 | DTSTART;VALUE=DATE:20200502
1458 | SUMMARY:劳动节假期
1459 | DESCRIPTION:假期第2天 / 共5天
1460 | END:VEVENT
1461 |
1462 | BEGIN:VEVENT
1463 | UID:20200503-0003-0005-0001-0000a95511fe
1464 | DTSTART;VALUE=DATE:20200503
1465 | SUMMARY:劳动节假期
1466 | DESCRIPTION:假期第3天 / 共5天
1467 | END:VEVENT
1468 |
1469 | BEGIN:VEVENT
1470 | UID:20200504-0004-0005-0001-0000a95511fe
1471 | DTSTART;VALUE=DATE:20200504
1472 | SUMMARY:劳动节假期
1473 | DESCRIPTION:假期第4天 / 共5天
1474 | END:VEVENT
1475 |
1476 | BEGIN:VEVENT
1477 | UID:20200505-0005-0005-0001-0000a95511fe
1478 | DTSTART;VALUE=DATE:20200505
1479 | SUMMARY:劳动节假期
1480 | DESCRIPTION:假期第5天 / 共5天
1481 | END:VEVENT
1482 |
1483 | BEGIN:VEVENT
1484 | UID:20200625-0001-0003-0001-0000a95511fe
1485 | DTSTART;VALUE=DATE:20200625
1486 | SUMMARY:端午节假期
1487 | DESCRIPTION:假期第1天 / 共3天
1488 | END:VEVENT
1489 |
1490 | BEGIN:VEVENT
1491 | UID:20200626-0002-0003-0001-0000a95511fe
1492 | DTSTART;VALUE=DATE:20200626
1493 | SUMMARY:端午节假期
1494 | DESCRIPTION:假期第2天 / 共3天
1495 | END:VEVENT
1496 |
1497 | BEGIN:VEVENT
1498 | UID:20200627-0003-0003-0001-0000a95511fe
1499 | DTSTART;VALUE=DATE:20200627
1500 | SUMMARY:端午节假期
1501 | DESCRIPTION:假期第3天 / 共3天
1502 | END:VEVENT
1503 |
1504 | BEGIN:VEVENT
1505 | UID:20201001-0001-0008-0001-0000a95511fe
1506 | DTSTART;VALUE=DATE:20201001
1507 | SUMMARY:国庆节、中秋节假期
1508 | DESCRIPTION:假期第1天 / 共8天
1509 | END:VEVENT
1510 |
1511 | BEGIN:VEVENT
1512 | UID:20201002-0002-0008-0001-0000a95511fe
1513 | DTSTART;VALUE=DATE:20201002
1514 | SUMMARY:国庆节、中秋节假期
1515 | DESCRIPTION:假期第2天 / 共8天
1516 | END:VEVENT
1517 |
1518 | BEGIN:VEVENT
1519 | UID:20201003-0003-0008-0001-0000a95511fe
1520 | DTSTART;VALUE=DATE:20201003
1521 | SUMMARY:国庆节、中秋节假期
1522 | DESCRIPTION:假期第3天 / 共8天
1523 | END:VEVENT
1524 |
1525 | BEGIN:VEVENT
1526 | UID:20201004-0004-0008-0001-0000a95511fe
1527 | DTSTART;VALUE=DATE:20201004
1528 | SUMMARY:国庆节、中秋节假期
1529 | DESCRIPTION:假期第4天 / 共8天
1530 | END:VEVENT
1531 |
1532 | BEGIN:VEVENT
1533 | UID:20201005-0005-0008-0001-0000a95511fe
1534 | DTSTART;VALUE=DATE:20201005
1535 | SUMMARY:国庆节、中秋节假期
1536 | DESCRIPTION:假期第5天 / 共8天
1537 | END:VEVENT
1538 |
1539 | BEGIN:VEVENT
1540 | UID:20201006-0006-0008-0001-0000a95511fe
1541 | DTSTART;VALUE=DATE:20201006
1542 | SUMMARY:国庆节、中秋节假期
1543 | DESCRIPTION:假期第6天 / 共8天
1544 | END:VEVENT
1545 |
1546 | BEGIN:VEVENT
1547 | UID:20201007-0007-0008-0001-0000a95511fe
1548 | DTSTART;VALUE=DATE:20201007
1549 | SUMMARY:国庆节、中秋节假期
1550 | DESCRIPTION:假期第7天 / 共8天
1551 | END:VEVENT
1552 |
1553 | BEGIN:VEVENT
1554 | UID:20201008-0008-0008-0001-0000a95511fe
1555 | DTSTART;VALUE=DATE:20201008
1556 | SUMMARY:国庆节、中秋节假期
1557 | DESCRIPTION:假期第8天 / 共8天
1558 | END:VEVENT
1559 |
1560 | BEGIN:VEVENT
1561 | UID:20210101-0001-0003-0001-0000a95511fe
1562 | DTSTART;VALUE=DATE:20210101
1563 | SUMMARY:元旦假期
1564 | DESCRIPTION:假期第1天 / 共3天
1565 | END:VEVENT
1566 |
1567 | BEGIN:VEVENT
1568 | UID:20210102-0002-0003-0001-0000a95511fe
1569 | DTSTART;VALUE=DATE:20210102
1570 | SUMMARY:元旦假期
1571 | DESCRIPTION:假期第2天 / 共3天
1572 | END:VEVENT
1573 |
1574 | BEGIN:VEVENT
1575 | UID:20210103-0003-0003-0001-0000a95511fe
1576 | DTSTART;VALUE=DATE:20210103
1577 | SUMMARY:元旦假期
1578 | DESCRIPTION:假期第3天 / 共3天
1579 | END:VEVENT
1580 |
1581 | BEGIN:VEVENT
1582 | UID:20210211-0001-0007-0001-0000a95511fe
1583 | DTSTART;VALUE=DATE:20210211
1584 | SUMMARY:春节假期
1585 | DESCRIPTION:假期第1天 / 共7天
1586 | END:VEVENT
1587 |
1588 | BEGIN:VEVENT
1589 | UID:20210212-0002-0007-0001-0000a95511fe
1590 | DTSTART;VALUE=DATE:20210212
1591 | SUMMARY:春节假期
1592 | DESCRIPTION:假期第2天 / 共7天
1593 | END:VEVENT
1594 |
1595 | BEGIN:VEVENT
1596 | UID:20210213-0003-0007-0001-0000a95511fe
1597 | DTSTART;VALUE=DATE:20210213
1598 | SUMMARY:春节假期
1599 | DESCRIPTION:假期第3天 / 共7天
1600 | END:VEVENT
1601 |
1602 | BEGIN:VEVENT
1603 | UID:20210214-0004-0007-0001-0000a95511fe
1604 | DTSTART;VALUE=DATE:20210214
1605 | SUMMARY:春节假期
1606 | DESCRIPTION:假期第4天 / 共7天
1607 | END:VEVENT
1608 |
1609 | BEGIN:VEVENT
1610 | UID:20210215-0005-0007-0001-0000a95511fe
1611 | DTSTART;VALUE=DATE:20210215
1612 | SUMMARY:春节假期
1613 | DESCRIPTION:假期第5天 / 共7天
1614 | END:VEVENT
1615 |
1616 | BEGIN:VEVENT
1617 | UID:20210216-0006-0007-0001-0000a95511fe
1618 | DTSTART;VALUE=DATE:20210216
1619 | SUMMARY:春节假期
1620 | DESCRIPTION:假期第6天 / 共7天
1621 | END:VEVENT
1622 |
1623 | BEGIN:VEVENT
1624 | UID:20210217-0007-0007-0001-0000a95511fe
1625 | DTSTART;VALUE=DATE:20210217
1626 | SUMMARY:春节假期
1627 | DESCRIPTION:假期第7天 / 共7天
1628 | END:VEVENT
1629 |
1630 | BEGIN:VEVENT
1631 | UID:20210403-0001-0003-0001-0000a95511fe
1632 | DTSTART;VALUE=DATE:20210403
1633 | SUMMARY:清明节假期
1634 | DESCRIPTION:假期第1天 / 共3天
1635 | END:VEVENT
1636 |
1637 | BEGIN:VEVENT
1638 | UID:20210404-0002-0003-0001-0000a95511fe
1639 | DTSTART;VALUE=DATE:20210404
1640 | SUMMARY:清明节假期
1641 | DESCRIPTION:假期第2天 / 共3天
1642 | END:VEVENT
1643 |
1644 | BEGIN:VEVENT
1645 | UID:20210405-0003-0003-0001-0000a95511fe
1646 | DTSTART;VALUE=DATE:20210405
1647 | SUMMARY:清明节假期
1648 | DESCRIPTION:假期第3天 / 共3天
1649 | END:VEVENT
1650 |
1651 | BEGIN:VEVENT
1652 | UID:20210501-0001-0005-0001-0000a95511fe
1653 | DTSTART;VALUE=DATE:20210501
1654 | SUMMARY:劳动节假期
1655 | DESCRIPTION:假期第1天 / 共5天
1656 | END:VEVENT
1657 |
1658 | BEGIN:VEVENT
1659 | UID:20210502-0002-0005-0001-0000a95511fe
1660 | DTSTART;VALUE=DATE:20210502
1661 | SUMMARY:劳动节假期
1662 | DESCRIPTION:假期第2天 / 共5天
1663 | END:VEVENT
1664 |
1665 | BEGIN:VEVENT
1666 | UID:20210503-0003-0005-0001-0000a95511fe
1667 | DTSTART;VALUE=DATE:20210503
1668 | SUMMARY:劳动节假期
1669 | DESCRIPTION:假期第3天 / 共5天
1670 | END:VEVENT
1671 |
1672 | BEGIN:VEVENT
1673 | UID:20210504-0004-0005-0001-0000a95511fe
1674 | DTSTART;VALUE=DATE:20210504
1675 | SUMMARY:劳动节假期
1676 | DESCRIPTION:假期第4天 / 共5天
1677 | END:VEVENT
1678 |
1679 | BEGIN:VEVENT
1680 | UID:20210505-0005-0005-0001-0000a95511fe
1681 | DTSTART;VALUE=DATE:20210505
1682 | SUMMARY:劳动节假期
1683 | DESCRIPTION:假期第5天 / 共5天
1684 | END:VEVENT
1685 |
1686 | BEGIN:VEVENT
1687 | UID:20210612-0001-0003-0001-0000a95511fe
1688 | DTSTART;VALUE=DATE:20210612
1689 | SUMMARY:端午节假期
1690 | DESCRIPTION:假期第1天 / 共3天
1691 | END:VEVENT
1692 |
1693 | BEGIN:VEVENT
1694 | UID:20210613-0002-0003-0001-0000a95511fe
1695 | DTSTART;VALUE=DATE:20210613
1696 | SUMMARY:端午节假期
1697 | DESCRIPTION:假期第2天 / 共3天
1698 | END:VEVENT
1699 |
1700 | BEGIN:VEVENT
1701 | UID:20210614-0003-0003-0001-0000a95511fe
1702 | DTSTART;VALUE=DATE:20210614
1703 | SUMMARY:端午节假期
1704 | DESCRIPTION:假期第3天 / 共3天
1705 | END:VEVENT
1706 |
1707 | BEGIN:VEVENT
1708 | UID:20210919-0001-0003-0001-0000a95511fe
1709 | DTSTART;VALUE=DATE:20210919
1710 | SUMMARY:中秋节假期
1711 | DESCRIPTION:假期第1天 / 共3天
1712 | END:VEVENT
1713 |
1714 | BEGIN:VEVENT
1715 | UID:20210920-0002-0003-0001-0000a95511fe
1716 | DTSTART;VALUE=DATE:20210920
1717 | SUMMARY:中秋节假期
1718 | DESCRIPTION:假期第2天 / 共3天
1719 | END:VEVENT
1720 |
1721 | BEGIN:VEVENT
1722 | UID:20210921-0003-0003-0001-0000a95511fe
1723 | DTSTART;VALUE=DATE:20210921
1724 | SUMMARY:中秋节假期
1725 | DESCRIPTION:假期第3天 / 共3天
1726 | END:VEVENT
1727 |
1728 | BEGIN:VEVENT
1729 | UID:20211001-0001-0007-0001-0000a95511fe
1730 | DTSTART;VALUE=DATE:20211001
1731 | SUMMARY:国庆节假期
1732 | DESCRIPTION:假期第1天 / 共7天
1733 | END:VEVENT
1734 |
1735 | BEGIN:VEVENT
1736 | UID:20211002-0002-0007-0001-0000a95511fe
1737 | DTSTART;VALUE=DATE:20211002
1738 | SUMMARY:国庆节假期
1739 | DESCRIPTION:假期第2天 / 共7天
1740 | END:VEVENT
1741 |
1742 | BEGIN:VEVENT
1743 | UID:20211003-0003-0007-0001-0000a95511fe
1744 | DTSTART;VALUE=DATE:20211003
1745 | SUMMARY:国庆节假期
1746 | DESCRIPTION:假期第3天 / 共7天
1747 | END:VEVENT
1748 |
1749 | BEGIN:VEVENT
1750 | UID:20211004-0004-0007-0001-0000a95511fe
1751 | DTSTART;VALUE=DATE:20211004
1752 | SUMMARY:国庆节假期
1753 | DESCRIPTION:假期第4天 / 共7天
1754 | END:VEVENT
1755 |
1756 | BEGIN:VEVENT
1757 | UID:20211005-0005-0007-0001-0000a95511fe
1758 | DTSTART;VALUE=DATE:20211005
1759 | SUMMARY:国庆节假期
1760 | DESCRIPTION:假期第5天 / 共7天
1761 | END:VEVENT
1762 |
1763 | BEGIN:VEVENT
1764 | UID:20211006-0006-0007-0001-0000a95511fe
1765 | DTSTART;VALUE=DATE:20211006
1766 | SUMMARY:国庆节假期
1767 | DESCRIPTION:假期第6天 / 共7天
1768 | END:VEVENT
1769 |
1770 | BEGIN:VEVENT
1771 | UID:20211007-0007-0007-0001-0000a95511fe
1772 | DTSTART;VALUE=DATE:20211007
1773 | SUMMARY:国庆节假期
1774 | DESCRIPTION:假期第7天 / 共7天
1775 | END:VEVENT
1776 |
1777 | BEGIN:VEVENT
1778 | UID:20220101-0001-0003-0001-0000a95511fe
1779 | DTSTART;VALUE=DATE:20220101
1780 | SUMMARY:元旦假期
1781 | DESCRIPTION:假期第1天 / 共3天
1782 | END:VEVENT
1783 |
1784 | BEGIN:VEVENT
1785 | UID:20220102-0002-0003-0001-0000a95511fe
1786 | DTSTART;VALUE=DATE:20220102
1787 | SUMMARY:元旦假期
1788 | DESCRIPTION:假期第2天 / 共3天
1789 | END:VEVENT
1790 |
1791 | BEGIN:VEVENT
1792 | UID:20220103-0003-0003-0001-0000a95511fe
1793 | DTSTART;VALUE=DATE:20220103
1794 | SUMMARY:元旦假期
1795 | DESCRIPTION:假期第3天 / 共3天
1796 | END:VEVENT
1797 |
1798 | BEGIN:VEVENT
1799 | UID:20220131-0001-0007-0001-0000a95511fe
1800 | DTSTART;VALUE=DATE:20220131
1801 | SUMMARY:春节假期
1802 | DESCRIPTION:假期第1天 / 共7天
1803 | END:VEVENT
1804 |
1805 | BEGIN:VEVENT
1806 | UID:20220201-0002-0007-0001-0000a95511fe
1807 | DTSTART;VALUE=DATE:20220201
1808 | SUMMARY:春节假期
1809 | DESCRIPTION:假期第2天 / 共7天
1810 | END:VEVENT
1811 |
1812 | BEGIN:VEVENT
1813 | UID:20220202-0003-0007-0001-0000a95511fe
1814 | DTSTART;VALUE=DATE:20220202
1815 | SUMMARY:春节假期
1816 | DESCRIPTION:假期第3天 / 共7天
1817 | END:VEVENT
1818 |
1819 | BEGIN:VEVENT
1820 | UID:20220203-0004-0007-0001-0000a95511fe
1821 | DTSTART;VALUE=DATE:20220203
1822 | SUMMARY:春节假期
1823 | DESCRIPTION:假期第4天 / 共7天
1824 | END:VEVENT
1825 |
1826 | BEGIN:VEVENT
1827 | UID:20220204-0005-0007-0001-0000a95511fe
1828 | DTSTART;VALUE=DATE:20220204
1829 | SUMMARY:春节假期
1830 | DESCRIPTION:假期第5天 / 共7天
1831 | END:VEVENT
1832 |
1833 | BEGIN:VEVENT
1834 | UID:20220205-0006-0007-0001-0000a95511fe
1835 | DTSTART;VALUE=DATE:20220205
1836 | SUMMARY:春节假期
1837 | DESCRIPTION:假期第6天 / 共7天
1838 | END:VEVENT
1839 |
1840 | BEGIN:VEVENT
1841 | UID:20220206-0007-0007-0001-0000a95511fe
1842 | DTSTART;VALUE=DATE:20220206
1843 | SUMMARY:春节假期
1844 | DESCRIPTION:假期第7天 / 共7天
1845 | END:VEVENT
1846 |
1847 | BEGIN:VEVENT
1848 | UID:20220403-0001-0003-0001-0000a95511fe
1849 | DTSTART;VALUE=DATE:20220403
1850 | SUMMARY:清明节假期
1851 | DESCRIPTION:假期第1天 / 共3天
1852 | END:VEVENT
1853 |
1854 | BEGIN:VEVENT
1855 | UID:20220404-0002-0003-0001-0000a95511fe
1856 | DTSTART;VALUE=DATE:20220404
1857 | SUMMARY:清明节假期
1858 | DESCRIPTION:假期第2天 / 共3天
1859 | END:VEVENT
1860 |
1861 | BEGIN:VEVENT
1862 | UID:20220405-0003-0003-0001-0000a95511fe
1863 | DTSTART;VALUE=DATE:20220405
1864 | SUMMARY:清明节假期
1865 | DESCRIPTION:假期第3天 / 共3天
1866 | END:VEVENT
1867 |
1868 | BEGIN:VEVENT
1869 | UID:20220430-0001-0005-0001-0000a95511fe
1870 | DTSTART;VALUE=DATE:20220430
1871 | SUMMARY:劳动节假期
1872 | DESCRIPTION:假期第1天 / 共5天
1873 | END:VEVENT
1874 |
1875 | BEGIN:VEVENT
1876 | UID:20220501-0002-0005-0001-0000a95511fe
1877 | DTSTART;VALUE=DATE:20220501
1878 | SUMMARY:劳动节假期
1879 | DESCRIPTION:假期第2天 / 共5天
1880 | END:VEVENT
1881 |
1882 | BEGIN:VEVENT
1883 | UID:20220502-0003-0005-0001-0000a95511fe
1884 | DTSTART;VALUE=DATE:20220502
1885 | SUMMARY:劳动节假期
1886 | DESCRIPTION:假期第3天 / 共5天
1887 | END:VEVENT
1888 |
1889 | BEGIN:VEVENT
1890 | UID:20220503-0004-0005-0001-0000a95511fe
1891 | DTSTART;VALUE=DATE:20220503
1892 | SUMMARY:劳动节假期
1893 | DESCRIPTION:假期第4天 / 共5天
1894 | END:VEVENT
1895 |
1896 | BEGIN:VEVENT
1897 | UID:20220504-0005-0005-0001-0000a95511fe
1898 | DTSTART;VALUE=DATE:20220504
1899 | SUMMARY:劳动节假期
1900 | DESCRIPTION:假期第5天 / 共5天
1901 | END:VEVENT
1902 |
1903 | BEGIN:VEVENT
1904 | UID:20220603-0001-0003-0001-0000a95511fe
1905 | DTSTART;VALUE=DATE:20220603
1906 | SUMMARY:端午节假期
1907 | DESCRIPTION:假期第1天 / 共3天
1908 | END:VEVENT
1909 |
1910 | BEGIN:VEVENT
1911 | UID:20220604-0002-0003-0001-0000a95511fe
1912 | DTSTART;VALUE=DATE:20220604
1913 | SUMMARY:端午节假期
1914 | DESCRIPTION:假期第2天 / 共3天
1915 | END:VEVENT
1916 |
1917 | BEGIN:VEVENT
1918 | UID:20220605-0003-0003-0001-0000a95511fe
1919 | DTSTART;VALUE=DATE:20220605
1920 | SUMMARY:端午节假期
1921 | DESCRIPTION:假期第3天 / 共3天
1922 | END:VEVENT
1923 |
1924 | BEGIN:VEVENT
1925 | UID:20220910-0001-0003-0001-0000a95511fe
1926 | DTSTART;VALUE=DATE:20220910
1927 | SUMMARY:中秋节假期
1928 | DESCRIPTION:假期第1天 / 共3天
1929 | END:VEVENT
1930 |
1931 | BEGIN:VEVENT
1932 | UID:20220911-0002-0003-0001-0000a95511fe
1933 | DTSTART;VALUE=DATE:20220911
1934 | SUMMARY:中秋节假期
1935 | DESCRIPTION:假期第2天 / 共3天
1936 | END:VEVENT
1937 |
1938 | BEGIN:VEVENT
1939 | UID:20220912-0003-0003-0001-0000a95511fe
1940 | DTSTART;VALUE=DATE:20220912
1941 | SUMMARY:中秋节假期
1942 | DESCRIPTION:假期第3天 / 共3天
1943 | END:VEVENT
1944 |
1945 | BEGIN:VEVENT
1946 | UID:20221001-0001-0007-0001-0000a95511fe
1947 | DTSTART;VALUE=DATE:20221001
1948 | SUMMARY:国庆节假期
1949 | DESCRIPTION:假期第1天 / 共7天
1950 | END:VEVENT
1951 |
1952 | BEGIN:VEVENT
1953 | UID:20221002-0002-0007-0001-0000a95511fe
1954 | DTSTART;VALUE=DATE:20221002
1955 | SUMMARY:国庆节假期
1956 | DESCRIPTION:假期第2天 / 共7天
1957 | END:VEVENT
1958 |
1959 | BEGIN:VEVENT
1960 | UID:20221003-0003-0007-0001-0000a95511fe
1961 | DTSTART;VALUE=DATE:20221003
1962 | SUMMARY:国庆节假期
1963 | DESCRIPTION:假期第3天 / 共7天
1964 | END:VEVENT
1965 |
1966 | BEGIN:VEVENT
1967 | UID:20221004-0004-0007-0001-0000a95511fe
1968 | DTSTART;VALUE=DATE:20221004
1969 | SUMMARY:国庆节假期
1970 | DESCRIPTION:假期第4天 / 共7天
1971 | END:VEVENT
1972 |
1973 | BEGIN:VEVENT
1974 | UID:20221005-0005-0007-0001-0000a95511fe
1975 | DTSTART;VALUE=DATE:20221005
1976 | SUMMARY:国庆节假期
1977 | DESCRIPTION:假期第5天 / 共7天
1978 | END:VEVENT
1979 |
1980 | BEGIN:VEVENT
1981 | UID:20221006-0006-0007-0001-0000a95511fe
1982 | DTSTART;VALUE=DATE:20221006
1983 | SUMMARY:国庆节假期
1984 | DESCRIPTION:假期第6天 / 共7天
1985 | END:VEVENT
1986 |
1987 | BEGIN:VEVENT
1988 | UID:20221007-0007-0007-0001-0000a95511fe
1989 | DTSTART;VALUE=DATE:20221007
1990 | SUMMARY:国庆节假期
1991 | DESCRIPTION:假期第7天 / 共7天
1992 | END:VEVENT
1993 |
1994 | BEGIN:VEVENT
1995 | UID:20221231-0001-0003-0001-0000a95511fe
1996 | DTSTART;VALUE=DATE:20221231
1997 | SUMMARY:元旦假期
1998 | DESCRIPTION:假期第1天 / 共3天
1999 | END:VEVENT
2000 |
2001 | BEGIN:VEVENT
2002 | UID:20230101-0002-0003-0001-0000a95511fe
2003 | DTSTART;VALUE=DATE:20230101
2004 | SUMMARY:元旦假期
2005 | DESCRIPTION:假期第2天 / 共3天
2006 | END:VEVENT
2007 |
2008 | BEGIN:VEVENT
2009 | UID:20230102-0003-0003-0001-0000a95511fe
2010 | DTSTART;VALUE=DATE:20230102
2011 | SUMMARY:元旦假期
2012 | DESCRIPTION:假期第3天 / 共3天
2013 | END:VEVENT
2014 |
2015 | BEGIN:VEVENT
2016 | UID:20230121-0001-0007-0001-0000a95511fe
2017 | DTSTART;VALUE=DATE:20230121
2018 | SUMMARY:春节假期
2019 | DESCRIPTION:假期第1天 / 共7天
2020 | END:VEVENT
2021 |
2022 | BEGIN:VEVENT
2023 | UID:20230122-0002-0007-0001-0000a95511fe
2024 | DTSTART;VALUE=DATE:20230122
2025 | SUMMARY:春节假期
2026 | DESCRIPTION:假期第2天 / 共7天
2027 | END:VEVENT
2028 |
2029 | BEGIN:VEVENT
2030 | UID:20230123-0003-0007-0001-0000a95511fe
2031 | DTSTART;VALUE=DATE:20230123
2032 | SUMMARY:春节假期
2033 | DESCRIPTION:假期第3天 / 共7天
2034 | END:VEVENT
2035 |
2036 | BEGIN:VEVENT
2037 | UID:20230124-0004-0007-0001-0000a95511fe
2038 | DTSTART;VALUE=DATE:20230124
2039 | SUMMARY:春节假期
2040 | DESCRIPTION:假期第4天 / 共7天
2041 | END:VEVENT
2042 |
2043 | BEGIN:VEVENT
2044 | UID:20230125-0005-0007-0001-0000a95511fe
2045 | DTSTART;VALUE=DATE:20230125
2046 | SUMMARY:春节假期
2047 | DESCRIPTION:假期第5天 / 共7天
2048 | END:VEVENT
2049 |
2050 | BEGIN:VEVENT
2051 | UID:20230126-0006-0007-0001-0000a95511fe
2052 | DTSTART;VALUE=DATE:20230126
2053 | SUMMARY:春节假期
2054 | DESCRIPTION:假期第6天 / 共7天
2055 | END:VEVENT
2056 |
2057 | BEGIN:VEVENT
2058 | UID:20230127-0007-0007-0001-0000a95511fe
2059 | DTSTART;VALUE=DATE:20230127
2060 | SUMMARY:春节假期
2061 | DESCRIPTION:假期第7天 / 共7天
2062 | END:VEVENT
2063 |
2064 | BEGIN:VEVENT
2065 | UID:20230405-0001-0001-0001-0000a95511fe
2066 | DTSTART;VALUE=DATE:20230405
2067 | SUMMARY:清明节假期
2068 | DESCRIPTION:假期第1天 / 共1天
2069 | END:VEVENT
2070 |
2071 | BEGIN:VEVENT
2072 | UID:20230429-0001-0005-0001-0000a95511fe
2073 | DTSTART;VALUE=DATE:20230429
2074 | SUMMARY:劳动节假期
2075 | DESCRIPTION:假期第1天 / 共5天
2076 | END:VEVENT
2077 |
2078 | BEGIN:VEVENT
2079 | UID:20230430-0002-0005-0001-0000a95511fe
2080 | DTSTART;VALUE=DATE:20230430
2081 | SUMMARY:劳动节假期
2082 | DESCRIPTION:假期第2天 / 共5天
2083 | END:VEVENT
2084 |
2085 | BEGIN:VEVENT
2086 | UID:20230501-0003-0005-0001-0000a95511fe
2087 | DTSTART;VALUE=DATE:20230501
2088 | SUMMARY:劳动节假期
2089 | DESCRIPTION:假期第3天 / 共5天
2090 | END:VEVENT
2091 |
2092 | BEGIN:VEVENT
2093 | UID:20230502-0004-0005-0001-0000a95511fe
2094 | DTSTART;VALUE=DATE:20230502
2095 | SUMMARY:劳动节假期
2096 | DESCRIPTION:假期第4天 / 共5天
2097 | END:VEVENT
2098 |
2099 | BEGIN:VEVENT
2100 | UID:20230503-0005-0005-0001-0000a95511fe
2101 | DTSTART;VALUE=DATE:20230503
2102 | SUMMARY:劳动节假期
2103 | DESCRIPTION:假期第5天 / 共5天
2104 | END:VEVENT
2105 |
2106 | BEGIN:VEVENT
2107 | UID:20230622-0001-0003-0001-0000a95511fe
2108 | DTSTART;VALUE=DATE:20230622
2109 | SUMMARY:端午节假期
2110 | DESCRIPTION:假期第1天 / 共3天
2111 | END:VEVENT
2112 |
2113 | BEGIN:VEVENT
2114 | UID:20230623-0002-0003-0001-0000a95511fe
2115 | DTSTART;VALUE=DATE:20230623
2116 | SUMMARY:端午节假期
2117 | DESCRIPTION:假期第2天 / 共3天
2118 | END:VEVENT
2119 |
2120 | BEGIN:VEVENT
2121 | UID:20230624-0003-0003-0001-0000a95511fe
2122 | DTSTART;VALUE=DATE:20230624
2123 | SUMMARY:端午节假期
2124 | DESCRIPTION:假期第3天 / 共3天
2125 | END:VEVENT
2126 |
2127 | BEGIN:VEVENT
2128 | UID:20230929-0001-0008-0001-0000a95511fe
2129 | DTSTART;VALUE=DATE:20230929
2130 | SUMMARY:中秋节、国庆节假期
2131 | DESCRIPTION:假期第1天 / 共8天
2132 | END:VEVENT
2133 |
2134 | BEGIN:VEVENT
2135 | UID:20230930-0002-0008-0001-0000a95511fe
2136 | DTSTART;VALUE=DATE:20230930
2137 | SUMMARY:中秋节、国庆节假期
2138 | DESCRIPTION:假期第2天 / 共8天
2139 | END:VEVENT
2140 |
2141 | BEGIN:VEVENT
2142 | UID:20231001-0003-0008-0001-0000a95511fe
2143 | DTSTART;VALUE=DATE:20231001
2144 | SUMMARY:中秋节、国庆节假期
2145 | DESCRIPTION:假期第3天 / 共8天
2146 | END:VEVENT
2147 |
2148 | BEGIN:VEVENT
2149 | UID:20231002-0004-0008-0001-0000a95511fe
2150 | DTSTART;VALUE=DATE:20231002
2151 | SUMMARY:中秋节、国庆节假期
2152 | DESCRIPTION:假期第4天 / 共8天
2153 | END:VEVENT
2154 |
2155 | BEGIN:VEVENT
2156 | UID:20231003-0005-0008-0001-0000a95511fe
2157 | DTSTART;VALUE=DATE:20231003
2158 | SUMMARY:中秋节、国庆节假期
2159 | DESCRIPTION:假期第5天 / 共8天
2160 | END:VEVENT
2161 |
2162 | BEGIN:VEVENT
2163 | UID:20231004-0006-0008-0001-0000a95511fe
2164 | DTSTART;VALUE=DATE:20231004
2165 | SUMMARY:中秋节、国庆节假期
2166 | DESCRIPTION:假期第6天 / 共8天
2167 | END:VEVENT
2168 |
2169 | BEGIN:VEVENT
2170 | UID:20231005-0007-0008-0001-0000a95511fe
2171 | DTSTART;VALUE=DATE:20231005
2172 | SUMMARY:中秋节、国庆节假期
2173 | DESCRIPTION:假期第7天 / 共8天
2174 | END:VEVENT
2175 |
2176 | BEGIN:VEVENT
2177 | UID:20231006-0008-0008-0001-0000a95511fe
2178 | DTSTART;VALUE=DATE:20231006
2179 | SUMMARY:中秋节、国庆节假期
2180 | DESCRIPTION:假期第8天 / 共8天
2181 | END:VEVENT
2182 |
2183 | BEGIN:VEVENT
2184 | UID:20231230-0001-0003-0001-0000a95511fe
2185 | DTSTART;VALUE=DATE:20231230
2186 | SUMMARY:元旦假期
2187 | DESCRIPTION:假期第1天 / 共3天
2188 | END:VEVENT
2189 |
2190 | BEGIN:VEVENT
2191 | UID:20231231-0002-0003-0001-0000a95511fe
2192 | DTSTART;VALUE=DATE:20231231
2193 | SUMMARY:元旦假期
2194 | DESCRIPTION:假期第2天 / 共3天
2195 | END:VEVENT
2196 |
2197 | BEGIN:VEVENT
2198 | UID:20240101-0003-0003-0001-0000a95511fe
2199 | DTSTART;VALUE=DATE:20240101
2200 | SUMMARY:元旦假期
2201 | DESCRIPTION:假期第3天 / 共3天
2202 | END:VEVENT
2203 |
2204 | BEGIN:VEVENT
2205 | UID:20240210-0001-0008-0001-0000a95511fe
2206 | DTSTART;VALUE=DATE:20240210
2207 | SUMMARY:春节假期
2208 | DESCRIPTION:假期第1天 / 共8天
2209 | END:VEVENT
2210 |
2211 | BEGIN:VEVENT
2212 | UID:20240211-0002-0008-0001-0000a95511fe
2213 | DTSTART;VALUE=DATE:20240211
2214 | SUMMARY:春节假期
2215 | DESCRIPTION:假期第2天 / 共8天
2216 | END:VEVENT
2217 |
2218 | BEGIN:VEVENT
2219 | UID:20240212-0003-0008-0001-0000a95511fe
2220 | DTSTART;VALUE=DATE:20240212
2221 | SUMMARY:春节假期
2222 | DESCRIPTION:假期第3天 / 共8天
2223 | END:VEVENT
2224 |
2225 | BEGIN:VEVENT
2226 | UID:20240213-0004-0008-0001-0000a95511fe
2227 | DTSTART;VALUE=DATE:20240213
2228 | SUMMARY:春节假期
2229 | DESCRIPTION:假期第4天 / 共8天
2230 | END:VEVENT
2231 |
2232 | BEGIN:VEVENT
2233 | UID:20240214-0005-0008-0001-0000a95511fe
2234 | DTSTART;VALUE=DATE:20240214
2235 | SUMMARY:春节假期
2236 | DESCRIPTION:假期第5天 / 共8天
2237 | END:VEVENT
2238 |
2239 | BEGIN:VEVENT
2240 | UID:20240215-0006-0008-0001-0000a95511fe
2241 | DTSTART;VALUE=DATE:20240215
2242 | SUMMARY:春节假期
2243 | DESCRIPTION:假期第6天 / 共8天
2244 | END:VEVENT
2245 |
2246 | BEGIN:VEVENT
2247 | UID:20240216-0007-0008-0001-0000a95511fe
2248 | DTSTART;VALUE=DATE:20240216
2249 | SUMMARY:春节假期
2250 | DESCRIPTION:假期第7天 / 共8天
2251 | END:VEVENT
2252 |
2253 | BEGIN:VEVENT
2254 | UID:20240217-0008-0008-0001-0000a95511fe
2255 | DTSTART;VALUE=DATE:20240217
2256 | SUMMARY:春节假期
2257 | DESCRIPTION:假期第8天 / 共8天
2258 | END:VEVENT
2259 |
2260 | BEGIN:VEVENT
2261 | UID:20240404-0001-0003-0001-0000a95511fe
2262 | DTSTART;VALUE=DATE:20240404
2263 | SUMMARY:清明节假期
2264 | DESCRIPTION:假期第1天 / 共3天
2265 | END:VEVENT
2266 |
2267 | BEGIN:VEVENT
2268 | UID:20240405-0002-0003-0001-0000a95511fe
2269 | DTSTART;VALUE=DATE:20240405
2270 | SUMMARY:清明节假期
2271 | DESCRIPTION:假期第2天 / 共3天
2272 | END:VEVENT
2273 |
2274 | BEGIN:VEVENT
2275 | UID:20240406-0003-0003-0001-0000a95511fe
2276 | DTSTART;VALUE=DATE:20240406
2277 | SUMMARY:清明节假期
2278 | DESCRIPTION:假期第3天 / 共3天
2279 | END:VEVENT
2280 |
2281 | BEGIN:VEVENT
2282 | UID:20240501-0001-0005-0001-0000a95511fe
2283 | DTSTART;VALUE=DATE:20240501
2284 | SUMMARY:劳动节假期
2285 | DESCRIPTION:假期第1天 / 共5天
2286 | END:VEVENT
2287 |
2288 | BEGIN:VEVENT
2289 | UID:20240502-0002-0005-0001-0000a95511fe
2290 | DTSTART;VALUE=DATE:20240502
2291 | SUMMARY:劳动节假期
2292 | DESCRIPTION:假期第2天 / 共5天
2293 | END:VEVENT
2294 |
2295 | BEGIN:VEVENT
2296 | UID:20240503-0003-0005-0001-0000a95511fe
2297 | DTSTART;VALUE=DATE:20240503
2298 | SUMMARY:劳动节假期
2299 | DESCRIPTION:假期第3天 / 共5天
2300 | END:VEVENT
2301 |
2302 | BEGIN:VEVENT
2303 | UID:20240504-0004-0005-0001-0000a95511fe
2304 | DTSTART;VALUE=DATE:20240504
2305 | SUMMARY:劳动节假期
2306 | DESCRIPTION:假期第4天 / 共5天
2307 | END:VEVENT
2308 |
2309 | BEGIN:VEVENT
2310 | UID:20240505-0005-0005-0001-0000a95511fe
2311 | DTSTART;VALUE=DATE:20240505
2312 | SUMMARY:劳动节假期
2313 | DESCRIPTION:假期第5天 / 共5天
2314 | END:VEVENT
2315 |
2316 | BEGIN:VEVENT
2317 | UID:20240608-0001-0003-0001-0000a95511fe
2318 | DTSTART;VALUE=DATE:20240608
2319 | SUMMARY:端午节假期
2320 | DESCRIPTION:假期第1天 / 共3天
2321 | END:VEVENT
2322 |
2323 | BEGIN:VEVENT
2324 | UID:20240609-0002-0003-0001-0000a95511fe
2325 | DTSTART;VALUE=DATE:20240609
2326 | SUMMARY:端午节假期
2327 | DESCRIPTION:假期第2天 / 共3天
2328 | END:VEVENT
2329 |
2330 | BEGIN:VEVENT
2331 | UID:20240610-0003-0003-0001-0000a95511fe
2332 | DTSTART;VALUE=DATE:20240610
2333 | SUMMARY:端午节假期
2334 | DESCRIPTION:假期第3天 / 共3天
2335 | END:VEVENT
2336 |
2337 | BEGIN:VEVENT
2338 | UID:20240915-0001-0003-0001-0000a95511fe
2339 | DTSTART;VALUE=DATE:20240915
2340 | SUMMARY:中秋节假期
2341 | DESCRIPTION:假期第1天 / 共3天
2342 | END:VEVENT
2343 |
2344 | BEGIN:VEVENT
2345 | UID:20240916-0002-0003-0001-0000a95511fe
2346 | DTSTART;VALUE=DATE:20240916
2347 | SUMMARY:中秋节假期
2348 | DESCRIPTION:假期第2天 / 共3天
2349 | END:VEVENT
2350 |
2351 | BEGIN:VEVENT
2352 | UID:20240917-0003-0003-0001-0000a95511fe
2353 | DTSTART;VALUE=DATE:20240917
2354 | SUMMARY:中秋节假期
2355 | DESCRIPTION:假期第3天 / 共3天
2356 | END:VEVENT
2357 |
2358 | BEGIN:VEVENT
2359 | UID:20241001-0001-0007-0001-0000a95511fe
2360 | DTSTART;VALUE=DATE:20241001
2361 | SUMMARY:国庆节假期
2362 | DESCRIPTION:假期第1天 / 共7天
2363 | END:VEVENT
2364 |
2365 | BEGIN:VEVENT
2366 | UID:20241002-0002-0007-0001-0000a95511fe
2367 | DTSTART;VALUE=DATE:20241002
2368 | SUMMARY:国庆节假期
2369 | DESCRIPTION:假期第2天 / 共7天
2370 | END:VEVENT
2371 |
2372 | BEGIN:VEVENT
2373 | UID:20241003-0003-0007-0001-0000a95511fe
2374 | DTSTART;VALUE=DATE:20241003
2375 | SUMMARY:国庆节假期
2376 | DESCRIPTION:假期第3天 / 共7天
2377 | END:VEVENT
2378 |
2379 | BEGIN:VEVENT
2380 | UID:20241004-0004-0007-0001-0000a95511fe
2381 | DTSTART;VALUE=DATE:20241004
2382 | SUMMARY:国庆节假期
2383 | DESCRIPTION:假期第4天 / 共7天
2384 | END:VEVENT
2385 |
2386 | BEGIN:VEVENT
2387 | UID:20241005-0005-0007-0001-0000a95511fe
2388 | DTSTART;VALUE=DATE:20241005
2389 | SUMMARY:国庆节假期
2390 | DESCRIPTION:假期第5天 / 共7天
2391 | END:VEVENT
2392 |
2393 | BEGIN:VEVENT
2394 | UID:20241006-0006-0007-0001-0000a95511fe
2395 | DTSTART;VALUE=DATE:20241006
2396 | SUMMARY:国庆节假期
2397 | DESCRIPTION:假期第6天 / 共7天
2398 | END:VEVENT
2399 |
2400 | BEGIN:VEVENT
2401 | UID:20241007-0007-0007-0001-0000a95511fe
2402 | DTSTART;VALUE=DATE:20241007
2403 | SUMMARY:国庆节假期
2404 | DESCRIPTION:假期第7天 / 共7天
2405 | END:VEVENT
2406 |
2407 | BEGIN:VEVENT
2408 | UID:20250101-0001-0001-0001-0000a95511fe
2409 | DTSTART;VALUE=DATE:20250101
2410 | SUMMARY:元旦假期
2411 | DESCRIPTION:假期第1天 / 共1天
2412 | END:VEVENT
2413 |
2414 | BEGIN:VEVENT
2415 | UID:20250128-0001-0008-0001-0000a95511fe
2416 | DTSTART;VALUE=DATE:20250128
2417 | SUMMARY:春节假期
2418 | DESCRIPTION:假期第1天 / 共8天
2419 | END:VEVENT
2420 |
2421 | BEGIN:VEVENT
2422 | UID:20250129-0002-0008-0001-0000a95511fe
2423 | DTSTART;VALUE=DATE:20250129
2424 | SUMMARY:春节假期
2425 | DESCRIPTION:假期第2天 / 共8天
2426 | END:VEVENT
2427 |
2428 | BEGIN:VEVENT
2429 | UID:20250130-0003-0008-0001-0000a95511fe
2430 | DTSTART;VALUE=DATE:20250130
2431 | SUMMARY:春节假期
2432 | DESCRIPTION:假期第3天 / 共8天
2433 | END:VEVENT
2434 |
2435 | BEGIN:VEVENT
2436 | UID:20250131-0004-0008-0001-0000a95511fe
2437 | DTSTART;VALUE=DATE:20250131
2438 | SUMMARY:春节假期
2439 | DESCRIPTION:假期第4天 / 共8天
2440 | END:VEVENT
2441 |
2442 | BEGIN:VEVENT
2443 | UID:20250201-0005-0008-0001-0000a95511fe
2444 | DTSTART;VALUE=DATE:20250201
2445 | SUMMARY:春节假期
2446 | DESCRIPTION:假期第5天 / 共8天
2447 | END:VEVENT
2448 |
2449 | BEGIN:VEVENT
2450 | UID:20250202-0006-0008-0001-0000a95511fe
2451 | DTSTART;VALUE=DATE:20250202
2452 | SUMMARY:春节假期
2453 | DESCRIPTION:假期第6天 / 共8天
2454 | END:VEVENT
2455 |
2456 | BEGIN:VEVENT
2457 | UID:20250203-0007-0008-0001-0000a95511fe
2458 | DTSTART;VALUE=DATE:20250203
2459 | SUMMARY:春节假期
2460 | DESCRIPTION:假期第7天 / 共8天
2461 | END:VEVENT
2462 |
2463 | BEGIN:VEVENT
2464 | UID:20250204-0008-0008-0001-0000a95511fe
2465 | DTSTART;VALUE=DATE:20250204
2466 | SUMMARY:春节假期
2467 | DESCRIPTION:假期第8天 / 共8天
2468 | END:VEVENT
2469 |
2470 | BEGIN:VEVENT
2471 | UID:20250404-0001-0003-0001-0000a95511fe
2472 | DTSTART;VALUE=DATE:20250404
2473 | SUMMARY:清明节假期
2474 | DESCRIPTION:假期第1天 / 共3天
2475 | END:VEVENT
2476 |
2477 | BEGIN:VEVENT
2478 | UID:20250405-0002-0003-0001-0000a95511fe
2479 | DTSTART;VALUE=DATE:20250405
2480 | SUMMARY:清明节假期
2481 | DESCRIPTION:假期第2天 / 共3天
2482 | END:VEVENT
2483 |
2484 | BEGIN:VEVENT
2485 | UID:20250406-0003-0003-0001-0000a95511fe
2486 | DTSTART;VALUE=DATE:20250406
2487 | SUMMARY:清明节假期
2488 | DESCRIPTION:假期第3天 / 共3天
2489 | END:VEVENT
2490 |
2491 | BEGIN:VEVENT
2492 | UID:20250501-0001-0005-0001-0000a95511fe
2493 | DTSTART;VALUE=DATE:20250501
2494 | SUMMARY:劳动节假期
2495 | DESCRIPTION:假期第1天 / 共5天
2496 | END:VEVENT
2497 |
2498 | BEGIN:VEVENT
2499 | UID:20250502-0002-0005-0001-0000a95511fe
2500 | DTSTART;VALUE=DATE:20250502
2501 | SUMMARY:劳动节假期
2502 | DESCRIPTION:假期第2天 / 共5天
2503 | END:VEVENT
2504 |
2505 | BEGIN:VEVENT
2506 | UID:20250503-0003-0005-0001-0000a95511fe
2507 | DTSTART;VALUE=DATE:20250503
2508 | SUMMARY:劳动节假期
2509 | DESCRIPTION:假期第3天 / 共5天
2510 | END:VEVENT
2511 |
2512 | BEGIN:VEVENT
2513 | UID:20250504-0004-0005-0001-0000a95511fe
2514 | DTSTART;VALUE=DATE:20250504
2515 | SUMMARY:劳动节假期
2516 | DESCRIPTION:假期第4天 / 共5天
2517 | END:VEVENT
2518 |
2519 | BEGIN:VEVENT
2520 | UID:20250505-0005-0005-0001-0000a95511fe
2521 | DTSTART;VALUE=DATE:20250505
2522 | SUMMARY:劳动节假期
2523 | DESCRIPTION:假期第5天 / 共5天
2524 | END:VEVENT
2525 |
2526 | BEGIN:VEVENT
2527 | UID:20250531-0001-0003-0001-0000a95511fe
2528 | DTSTART;VALUE=DATE:20250531
2529 | SUMMARY:端午节假期
2530 | DESCRIPTION:假期第1天 / 共3天
2531 | END:VEVENT
2532 |
2533 | BEGIN:VEVENT
2534 | UID:20250601-0002-0003-0001-0000a95511fe
2535 | DTSTART;VALUE=DATE:20250601
2536 | SUMMARY:端午节假期
2537 | DESCRIPTION:假期第2天 / 共3天
2538 | END:VEVENT
2539 |
2540 | BEGIN:VEVENT
2541 | UID:20250602-0003-0003-0001-0000a95511fe
2542 | DTSTART;VALUE=DATE:20250602
2543 | SUMMARY:端午节假期
2544 | DESCRIPTION:假期第3天 / 共3天
2545 | END:VEVENT
2546 |
2547 | BEGIN:VEVENT
2548 | UID:20251001-0001-0008-0001-0000a95511fe
2549 | DTSTART;VALUE=DATE:20251001
2550 | SUMMARY:国庆节、中秋节假期
2551 | DESCRIPTION:假期第1天 / 共8天
2552 | END:VEVENT
2553 |
2554 | BEGIN:VEVENT
2555 | UID:20251002-0002-0008-0001-0000a95511fe
2556 | DTSTART;VALUE=DATE:20251002
2557 | SUMMARY:国庆节、中秋节假期
2558 | DESCRIPTION:假期第2天 / 共8天
2559 | END:VEVENT
2560 |
2561 | BEGIN:VEVENT
2562 | UID:20251003-0003-0008-0001-0000a95511fe
2563 | DTSTART;VALUE=DATE:20251003
2564 | SUMMARY:国庆节、中秋节假期
2565 | DESCRIPTION:假期第3天 / 共8天
2566 | END:VEVENT
2567 |
2568 | BEGIN:VEVENT
2569 | UID:20251004-0004-0008-0001-0000a95511fe
2570 | DTSTART;VALUE=DATE:20251004
2571 | SUMMARY:国庆节、中秋节假期
2572 | DESCRIPTION:假期第4天 / 共8天
2573 | END:VEVENT
2574 |
2575 | BEGIN:VEVENT
2576 | UID:20251005-0005-0008-0001-0000a95511fe
2577 | DTSTART;VALUE=DATE:20251005
2578 | SUMMARY:国庆节、中秋节假期
2579 | DESCRIPTION:假期第5天 / 共8天
2580 | END:VEVENT
2581 |
2582 | BEGIN:VEVENT
2583 | UID:20251006-0006-0008-0001-0000a95511fe
2584 | DTSTART;VALUE=DATE:20251006
2585 | SUMMARY:国庆节、中秋节假期
2586 | DESCRIPTION:假期第6天 / 共8天
2587 | END:VEVENT
2588 |
2589 | BEGIN:VEVENT
2590 | UID:20251007-0007-0008-0001-0000a95511fe
2591 | DTSTART;VALUE=DATE:20251007
2592 | SUMMARY:国庆节、中秋节假期
2593 | DESCRIPTION:假期第7天 / 共8天
2594 | END:VEVENT
2595 |
2596 | BEGIN:VEVENT
2597 | UID:20251008-0008-0008-0001-0000a95511fe
2598 | DTSTART;VALUE=DATE:20251008
2599 | SUMMARY:国庆节、中秋节假期
2600 | DESCRIPTION:假期第8天 / 共8天
2601 | END:VEVENT
2602 |
2603 | BEGIN:VEVENT
2604 | UID:20260101-0001-0003-0001-0000a95511fe
2605 | DTSTART;VALUE=DATE:20260101
2606 | SUMMARY:元旦假期
2607 | DESCRIPTION:假期第1天 / 共3天
2608 | END:VEVENT
2609 |
2610 | BEGIN:VEVENT
2611 | UID:20260102-0002-0003-0001-0000a95511fe
2612 | DTSTART;VALUE=DATE:20260102
2613 | SUMMARY:元旦假期
2614 | DESCRIPTION:假期第2天 / 共3天
2615 | END:VEVENT
2616 |
2617 | BEGIN:VEVENT
2618 | UID:20260103-0003-0003-0001-0000a95511fe
2619 | DTSTART;VALUE=DATE:20260103
2620 | SUMMARY:元旦假期
2621 | DESCRIPTION:假期第3天 / 共3天
2622 | END:VEVENT
2623 |
2624 | BEGIN:VEVENT
2625 | UID:20260215-0001-0009-0001-0000a95511fe
2626 | DTSTART;VALUE=DATE:20260215
2627 | SUMMARY:春节假期
2628 | DESCRIPTION:假期第1天 / 共9天
2629 | END:VEVENT
2630 |
2631 | BEGIN:VEVENT
2632 | UID:20260216-0002-0009-0001-0000a95511fe
2633 | DTSTART;VALUE=DATE:20260216
2634 | SUMMARY:春节假期
2635 | DESCRIPTION:假期第2天 / 共9天
2636 | END:VEVENT
2637 |
2638 | BEGIN:VEVENT
2639 | UID:20260217-0003-0009-0001-0000a95511fe
2640 | DTSTART;VALUE=DATE:20260217
2641 | SUMMARY:春节假期
2642 | DESCRIPTION:假期第3天 / 共9天
2643 | END:VEVENT
2644 |
2645 | BEGIN:VEVENT
2646 | UID:20260218-0004-0009-0001-0000a95511fe
2647 | DTSTART;VALUE=DATE:20260218
2648 | SUMMARY:春节假期
2649 | DESCRIPTION:假期第4天 / 共9天
2650 | END:VEVENT
2651 |
2652 | BEGIN:VEVENT
2653 | UID:20260219-0005-0009-0001-0000a95511fe
2654 | DTSTART;VALUE=DATE:20260219
2655 | SUMMARY:春节假期
2656 | DESCRIPTION:假期第5天 / 共9天
2657 | END:VEVENT
2658 |
2659 | BEGIN:VEVENT
2660 | UID:20260220-0006-0009-0001-0000a95511fe
2661 | DTSTART;VALUE=DATE:20260220
2662 | SUMMARY:春节假期
2663 | DESCRIPTION:假期第6天 / 共9天
2664 | END:VEVENT
2665 |
2666 | BEGIN:VEVENT
2667 | UID:20260221-0007-0009-0001-0000a95511fe
2668 | DTSTART;VALUE=DATE:20260221
2669 | SUMMARY:春节假期
2670 | DESCRIPTION:假期第7天 / 共9天
2671 | END:VEVENT
2672 |
2673 | BEGIN:VEVENT
2674 | UID:20260222-0008-0009-0001-0000a95511fe
2675 | DTSTART;VALUE=DATE:20260222
2676 | SUMMARY:春节假期
2677 | DESCRIPTION:假期第8天 / 共9天
2678 | END:VEVENT
2679 |
2680 | BEGIN:VEVENT
2681 | UID:20260223-0009-0009-0001-0000a95511fe
2682 | DTSTART;VALUE=DATE:20260223
2683 | SUMMARY:春节假期
2684 | DESCRIPTION:假期第9天 / 共9天
2685 | END:VEVENT
2686 |
2687 | BEGIN:VEVENT
2688 | UID:20260404-0001-0003-0001-0000a95511fe
2689 | DTSTART;VALUE=DATE:20260404
2690 | SUMMARY:清明节假期
2691 | DESCRIPTION:假期第1天 / 共3天
2692 | END:VEVENT
2693 |
2694 | BEGIN:VEVENT
2695 | UID:20260405-0002-0003-0001-0000a95511fe
2696 | DTSTART;VALUE=DATE:20260405
2697 | SUMMARY:清明节假期
2698 | DESCRIPTION:假期第2天 / 共3天
2699 | END:VEVENT
2700 |
2701 | BEGIN:VEVENT
2702 | UID:20260406-0003-0003-0001-0000a95511fe
2703 | DTSTART;VALUE=DATE:20260406
2704 | SUMMARY:清明节假期
2705 | DESCRIPTION:假期第3天 / 共3天
2706 | END:VEVENT
2707 |
2708 | BEGIN:VEVENT
2709 | UID:20260501-0001-0005-0001-0000a95511fe
2710 | DTSTART;VALUE=DATE:20260501
2711 | SUMMARY:劳动节假期
2712 | DESCRIPTION:假期第1天 / 共5天
2713 | END:VEVENT
2714 |
2715 | BEGIN:VEVENT
2716 | UID:20260502-0002-0005-0001-0000a95511fe
2717 | DTSTART;VALUE=DATE:20260502
2718 | SUMMARY:劳动节假期
2719 | DESCRIPTION:假期第2天 / 共5天
2720 | END:VEVENT
2721 |
2722 | BEGIN:VEVENT
2723 | UID:20260503-0003-0005-0001-0000a95511fe
2724 | DTSTART;VALUE=DATE:20260503
2725 | SUMMARY:劳动节假期
2726 | DESCRIPTION:假期第3天 / 共5天
2727 | END:VEVENT
2728 |
2729 | BEGIN:VEVENT
2730 | UID:20260504-0004-0005-0001-0000a95511fe
2731 | DTSTART;VALUE=DATE:20260504
2732 | SUMMARY:劳动节假期
2733 | DESCRIPTION:假期第4天 / 共5天
2734 | END:VEVENT
2735 |
2736 | BEGIN:VEVENT
2737 | UID:20260505-0005-0005-0001-0000a95511fe
2738 | DTSTART;VALUE=DATE:20260505
2739 | SUMMARY:劳动节假期
2740 | DESCRIPTION:假期第5天 / 共5天
2741 | END:VEVENT
2742 |
2743 | BEGIN:VEVENT
2744 | UID:20260619-0001-0003-0001-0000a95511fe
2745 | DTSTART;VALUE=DATE:20260619
2746 | SUMMARY:端午节假期
2747 | DESCRIPTION:假期第1天 / 共3天
2748 | END:VEVENT
2749 |
2750 | BEGIN:VEVENT
2751 | UID:20260620-0002-0003-0001-0000a95511fe
2752 | DTSTART;VALUE=DATE:20260620
2753 | SUMMARY:端午节假期
2754 | DESCRIPTION:假期第2天 / 共3天
2755 | END:VEVENT
2756 |
2757 | BEGIN:VEVENT
2758 | UID:20260621-0003-0003-0001-0000a95511fe
2759 | DTSTART;VALUE=DATE:20260621
2760 | SUMMARY:端午节假期
2761 | DESCRIPTION:假期第3天 / 共3天
2762 | END:VEVENT
2763 |
2764 | BEGIN:VEVENT
2765 | UID:20260925-0001-0003-0001-0000a95511fe
2766 | DTSTART;VALUE=DATE:20260925
2767 | SUMMARY:中秋节假期
2768 | DESCRIPTION:假期第1天 / 共3天
2769 | END:VEVENT
2770 |
2771 | BEGIN:VEVENT
2772 | UID:20260926-0002-0003-0001-0000a95511fe
2773 | DTSTART;VALUE=DATE:20260926
2774 | SUMMARY:中秋节假期
2775 | DESCRIPTION:假期第2天 / 共3天
2776 | END:VEVENT
2777 |
2778 | BEGIN:VEVENT
2779 | UID:20260927-0003-0003-0001-0000a95511fe
2780 | DTSTART;VALUE=DATE:20260927
2781 | SUMMARY:中秋节假期
2782 | DESCRIPTION:假期第3天 / 共3天
2783 | END:VEVENT
2784 |
2785 | BEGIN:VEVENT
2786 | UID:20261001-0001-0007-0001-0000a95511fe
2787 | DTSTART;VALUE=DATE:20261001
2788 | SUMMARY:国庆节假期
2789 | DESCRIPTION:假期第1天 / 共7天
2790 | END:VEVENT
2791 |
2792 | BEGIN:VEVENT
2793 | UID:20261002-0002-0007-0001-0000a95511fe
2794 | DTSTART;VALUE=DATE:20261002
2795 | SUMMARY:国庆节假期
2796 | DESCRIPTION:假期第2天 / 共7天
2797 | END:VEVENT
2798 |
2799 | BEGIN:VEVENT
2800 | UID:20261003-0003-0007-0001-0000a95511fe
2801 | DTSTART;VALUE=DATE:20261003
2802 | SUMMARY:国庆节假期
2803 | DESCRIPTION:假期第3天 / 共7天
2804 | END:VEVENT
2805 |
2806 | BEGIN:VEVENT
2807 | UID:20261004-0004-0007-0001-0000a95511fe
2808 | DTSTART;VALUE=DATE:20261004
2809 | SUMMARY:国庆节假期
2810 | DESCRIPTION:假期第4天 / 共7天
2811 | END:VEVENT
2812 |
2813 | BEGIN:VEVENT
2814 | UID:20261005-0005-0007-0001-0000a95511fe
2815 | DTSTART;VALUE=DATE:20261005
2816 | SUMMARY:国庆节假期
2817 | DESCRIPTION:假期第5天 / 共7天
2818 | END:VEVENT
2819 |
2820 | BEGIN:VEVENT
2821 | UID:20261006-0006-0007-0001-0000a95511fe
2822 | DTSTART;VALUE=DATE:20261006
2823 | SUMMARY:国庆节假期
2824 | DESCRIPTION:假期第6天 / 共7天
2825 | END:VEVENT
2826 |
2827 | BEGIN:VEVENT
2828 | UID:20261007-0007-0007-0001-0000a95511fe
2829 | DTSTART;VALUE=DATE:20261007
2830 | SUMMARY:国庆节假期
2831 | DESCRIPTION:假期第7天 / 共7天
2832 | END:VEVENT
2833 |
2834 |
2835 | END:VCALENDAR
2836 |
--------------------------------------------------------------------------------