From 8c7b967a432792291a690a3000650eff890d34db Mon Sep 17 00:00:00 2001 From: retanoj Date: Sun, 10 Oct 2021 02:02:56 +0800 Subject: [PATCH] feat: add ics output (#128) close #33 --- 2007.ics | 76 ++++++++ 2008.ics | 90 ++++++++++ 2009.ics | 97 ++++++++++ 2010.ics | 97 ++++++++++ 2011.ics | 97 ++++++++++ 2012.ics | 97 ++++++++++ 2013.ics | 118 ++++++++++++ 2014.ics | 104 +++++++++++ 2015.ics | 113 ++++++++++++ 2016.ics | 97 ++++++++++ 2017.ics | 90 ++++++++++ 2018.ics | 97 ++++++++++ 2019.ics | 104 +++++++++++ 2020.ics | 104 +++++++++++ 2021.ics | 111 ++++++++++++ 2022.ics | 13 ++ conv_to_ics.py | 83 +++++++++ holiday_cn.ics | 454 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + update.py | 20 ++- 20 files changed, 2062 insertions(+), 1 deletion(-) create mode 100644 2007.ics create mode 100644 2008.ics create mode 100644 2009.ics create mode 100644 2010.ics create mode 100644 2011.ics create mode 100644 2012.ics create mode 100644 2013.ics create mode 100644 2014.ics create mode 100644 2015.ics create mode 100644 2016.ics create mode 100644 2017.ics create mode 100644 2018.ics create mode 100644 2019.ics create mode 100644 2020.ics create mode 100644 2021.ics create mode 100644 2022.ics create mode 100644 conv_to_ics.py create mode 100644 holiday_cn.ics diff --git a/2007.ics b/2007.ics new file mode 100644 index 0000000..9d35a76 --- /dev/null +++ b/2007.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20061230 +DTEND;VALUE=DATE:20070101 +DTSTAMP;VALUE=DATE:20061230 +UID:2006-12-30/2007-01-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20070101 +DTEND;VALUE=DATE:20070104 +DTSTAMP;VALUE=DATE:20070101 +UID:2007-01-01/2007-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20070217 +DTEND;VALUE=DATE:20070218 +DTSTAMP;VALUE=DATE:20070217 +UID:2007-02-17/2007-02-18/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20070218 +DTEND;VALUE=DATE:20070225 +DTSTAMP;VALUE=DATE:20070218 +UID:2007-02-18/2007-02-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20070225 +DTEND;VALUE=DATE:20070226 +DTSTAMP;VALUE=DATE:20070225 +UID:2007-02-25/2007-02-26/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补“五一”假期) +DTSTART;VALUE=DATE:20070428 +DTEND;VALUE=DATE:20070430 +DTSTAMP;VALUE=DATE:20070428 +UID:2007-04-28/2007-04-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:“五一”假期 +DTSTART;VALUE=DATE:20070501 +DTEND;VALUE=DATE:20070508 +DTSTAMP;VALUE=DATE:20070501 +UID:2007-05-01/2007-05-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补“十一”假期) +DTSTART;VALUE=DATE:20070929 +DTEND;VALUE=DATE:20071001 +DTSTAMP;VALUE=DATE:20070929 +UID:2007-09-29/2007-10-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:“十一”假期 +DTSTART;VALUE=DATE:20071001 +DTEND;VALUE=DATE:20071008 +DTSTAMP;VALUE=DATE:20071001 +UID:2007-10-01/2007-10-08/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2008.ics b/2008.ics new file mode 100644 index 0000000..963d57a --- /dev/null +++ b/2008.ics @@ -0,0 +1,90 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20071229 +DTEND;VALUE=DATE:20071230 +DTSTAMP;VALUE=DATE:20071229 +UID:2007-12-29/2007-12-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20071230 +DTEND;VALUE=DATE:20080102 +DTSTAMP;VALUE=DATE:20071230 +UID:2007-12-30/2008-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20080202 +DTEND;VALUE=DATE:20080204 +DTSTAMP;VALUE=DATE:20080202 +UID:2008-02-02/2008-02-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20080206 +DTEND;VALUE=DATE:20080213 +DTSTAMP;VALUE=DATE:20080206 +UID:2008-02-06/2008-02-13/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20080404 +DTEND;VALUE=DATE:20080407 +DTSTAMP;VALUE=DATE:20080404 +UID:2008-04-04/2008-04-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:“五一”国际劳动节假期 +DTSTART;VALUE=DATE:20080501 +DTEND;VALUE=DATE:20080504 +DTSTAMP;VALUE=DATE:20080501 +UID:2008-05-01/2008-05-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补“五一”国际劳动节假期) +DTSTART;VALUE=DATE:20080504 +DTEND;VALUE=DATE:20080505 +DTSTAMP;VALUE=DATE:20080504 +UID:2008-05-04/2008-05-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20080607 +DTEND;VALUE=DATE:20080610 +DTSTAMP;VALUE=DATE:20080607 +UID:2008-06-07/2008-06-10/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20080913 +DTEND;VALUE=DATE:20080916 +DTSTAMP;VALUE=DATE:20080913 +UID:2008-09-13/2008-09-16/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20080927 +DTEND;VALUE=DATE:20080929 +DTSTAMP;VALUE=DATE:20080927 +UID:2008-09-27/2008-09-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20080929 +DTEND;VALUE=DATE:20081006 +DTSTAMP;VALUE=DATE:20080929 +UID:2008-09-29/2008-10-06/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2009.ics b/2009.ics new file mode 100644 index 0000000..e426339 --- /dev/null +++ b/2009.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20090101 +DTEND;VALUE=DATE:20090104 +DTSTAMP;VALUE=DATE:20090101 +UID:2009-01-01/2009-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20090104 +DTEND;VALUE=DATE:20090105 +DTSTAMP;VALUE=DATE:20090104 +UID:2009-01-04/2009-01-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20090124 +DTEND;VALUE=DATE:20090125 +DTSTAMP;VALUE=DATE:20090124 +UID:2009-01-24/2009-01-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20090125 +DTEND;VALUE=DATE:20090201 +DTSTAMP;VALUE=DATE:20090125 +UID:2009-01-25/2009-02-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20090201 +DTEND;VALUE=DATE:20090202 +DTSTAMP;VALUE=DATE:20090201 +UID:2009-02-01/2009-02-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20090404 +DTEND;VALUE=DATE:20090407 +DTSTAMP;VALUE=DATE:20090404 +UID:2009-04-04/2009-04-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20090501 +DTEND;VALUE=DATE:20090504 +DTSTAMP;VALUE=DATE:20090501 +UID:2009-05-01/2009-05-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20090528 +DTEND;VALUE=DATE:20090531 +DTSTAMP;VALUE=DATE:20090528 +UID:2009-05-28/2009-05-31/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20090531 +DTEND;VALUE=DATE:20090601 +DTSTAMP;VALUE=DATE:20090531 +UID:2009-05-31/2009-06-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节、中秋节假期) +DTSTART;VALUE=DATE:20090927 +DTEND;VALUE=DATE:20090928 +DTSTAMP;VALUE=DATE:20090927 +UID:2009-09-27/2009-09-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节、中秋节假期 +DTSTART;VALUE=DATE:20091001 +DTEND;VALUE=DATE:20091009 +DTSTAMP;VALUE=DATE:20091001 +UID:2009-10-01/2009-10-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节、中秋节假期) +DTSTART;VALUE=DATE:20091010 +DTEND;VALUE=DATE:20091011 +DTSTAMP;VALUE=DATE:20091010 +UID:2009-10-10/2009-10-11/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2010.ics b/2010.ics new file mode 100644 index 0000000..0db9494 --- /dev/null +++ b/2010.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20100101 +DTEND;VALUE=DATE:20100104 +DTSTAMP;VALUE=DATE:20100101 +UID:2010-01-01/2010-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20100213 +DTEND;VALUE=DATE:20100220 +DTSTAMP;VALUE=DATE:20100213 +UID:2010-02-13/2010-02-20/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20100220 +DTEND;VALUE=DATE:20100222 +DTSTAMP;VALUE=DATE:20100220 +UID:2010-02-20/2010-02-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20100403 +DTEND;VALUE=DATE:20100406 +DTSTAMP;VALUE=DATE:20100403 +UID:2010-04-03/2010-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20100501 +DTEND;VALUE=DATE:20100504 +DTSTAMP;VALUE=DATE:20100501 +UID:2010-05-01/2010-05-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20100612 +DTEND;VALUE=DATE:20100614 +DTSTAMP;VALUE=DATE:20100612 +UID:2010-06-12/2010-06-14/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20100614 +DTEND;VALUE=DATE:20100617 +DTSTAMP;VALUE=DATE:20100614 +UID:2010-06-14/2010-06-17/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节假期) +DTSTART;VALUE=DATE:20100919 +DTEND;VALUE=DATE:20100920 +DTSTAMP;VALUE=DATE:20100919 +UID:2010-09-19/2010-09-20/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20100922 +DTEND;VALUE=DATE:20100925 +DTSTAMP;VALUE=DATE:20100922 +UID:2010-09-22/2010-09-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节假期) +DTSTART;VALUE=DATE:20100925 +DTEND;VALUE=DATE:20100927 +DTSTAMP;VALUE=DATE:20100925 +UID:2010-09-25/2010-09-27/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20101001 +DTEND;VALUE=DATE:20101008 +DTSTAMP;VALUE=DATE:20101001 +UID:2010-10-01/2010-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20101009 +DTEND;VALUE=DATE:20101010 +DTSTAMP;VALUE=DATE:20101009 +UID:2010-10-09/2010-10-10/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2011.ics b/2011.ics new file mode 100644 index 0000000..701b1d1 --- /dev/null +++ b/2011.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20110101 +DTEND;VALUE=DATE:20110104 +DTSTAMP;VALUE=DATE:20110101 +UID:2011-01-01/2011-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20110130 +DTEND;VALUE=DATE:20110131 +DTSTAMP;VALUE=DATE:20110130 +UID:2011-01-30/2011-01-31/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20110202 +DTEND;VALUE=DATE:20110203 +DTSTAMP;VALUE=DATE:20110202 +UID:2011-02-02/2011-02-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20110208 +DTEND;VALUE=DATE:20110209 +DTSTAMP;VALUE=DATE:20110208 +UID:2011-02-08/2011-02-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20110212 +DTEND;VALUE=DATE:20110213 +DTSTAMP;VALUE=DATE:20110212 +UID:2011-02-12/2011-02-13/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20110402 +DTEND;VALUE=DATE:20110403 +DTSTAMP;VALUE=DATE:20110402 +UID:2011-04-02/2011-04-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20110403 +DTEND;VALUE=DATE:20110406 +DTSTAMP;VALUE=DATE:20110403 +UID:2011-04-03/2011-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20110430 +DTEND;VALUE=DATE:20110503 +DTSTAMP;VALUE=DATE:20110430 +UID:2011-04-30/2011-05-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20110604 +DTEND;VALUE=DATE:20110607 +DTSTAMP;VALUE=DATE:20110604 +UID:2011-06-04/2011-06-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20110910 +DTEND;VALUE=DATE:20110913 +DTSTAMP;VALUE=DATE:20110910 +UID:2011-09-10/2011-09-13/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20111001 +DTEND;VALUE=DATE:20111008 +DTSTAMP;VALUE=DATE:20111001 +UID:2011-10-01/2011-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20111008 +DTEND;VALUE=DATE:20111010 +DTSTAMP;VALUE=DATE:20111008 +UID:2011-10-08/2011-10-10/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2012.ics b/2012.ics new file mode 100644 index 0000000..9f3f417 --- /dev/null +++ b/2012.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20111231 +DTEND;VALUE=DATE:20120101 +DTSTAMP;VALUE=DATE:20111231 +UID:2011-12-31/2012-01-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20120101 +DTEND;VALUE=DATE:20120104 +DTSTAMP;VALUE=DATE:20120101 +UID:2012-01-01/2012-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20120121 +DTEND;VALUE=DATE:20120122 +DTSTAMP;VALUE=DATE:20120121 +UID:2012-01-21/2012-01-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20120122 +DTEND;VALUE=DATE:20120129 +DTSTAMP;VALUE=DATE:20120122 +UID:2012-01-22/2012-01-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20120129 +DTEND;VALUE=DATE:20120130 +DTSTAMP;VALUE=DATE:20120129 +UID:2012-01-29/2012-01-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20120331 +DTEND;VALUE=DATE:20120402 +DTSTAMP;VALUE=DATE:20120331 +UID:2012-03-31/2012-04-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20120402 +DTEND;VALUE=DATE:20120405 +DTSTAMP;VALUE=DATE:20120402 +UID:2012-04-02/2012-04-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20120428 +DTEND;VALUE=DATE:20120429 +DTSTAMP;VALUE=DATE:20120428 +UID:2012-04-28/2012-04-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20120429 +DTEND;VALUE=DATE:20120502 +DTSTAMP;VALUE=DATE:20120429 +UID:2012-04-29/2012-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20120622 +DTEND;VALUE=DATE:20120625 +DTSTAMP;VALUE=DATE:20120622 +UID:2012-06-22/2012-06-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节、国庆节假期) +DTSTART;VALUE=DATE:20120929 +DTEND;VALUE=DATE:20120930 +DTSTAMP;VALUE=DATE:20120929 +UID:2012-09-29/2012-09-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节、国庆节假期 +DTSTART;VALUE=DATE:20120930 +DTEND;VALUE=DATE:20121008 +DTSTAMP;VALUE=DATE:20120930 +UID:2012-09-30/2012-10-08/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2013.ics b/2013.ics new file mode 100644 index 0000000..bab35b1 --- /dev/null +++ b/2013.ics @@ -0,0 +1,118 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20130101 +DTEND;VALUE=DATE:20130104 +DTSTAMP;VALUE=DATE:20130101 +UID:2013-01-01/2013-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20130105 +DTEND;VALUE=DATE:20130107 +DTSTAMP;VALUE=DATE:20130105 +UID:2013-01-05/2013-01-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20130209 +DTEND;VALUE=DATE:20130216 +DTSTAMP;VALUE=DATE:20130209 +UID:2013-02-09/2013-02-16/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20130216 +DTEND;VALUE=DATE:20130218 +DTSTAMP;VALUE=DATE:20130216 +UID:2013-02-16/2013-02-18/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20130404 +DTEND;VALUE=DATE:20130407 +DTSTAMP;VALUE=DATE:20130404 +UID:2013-04-04/2013-04-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20130407 +DTEND;VALUE=DATE:20130408 +DTSTAMP;VALUE=DATE:20130407 +UID:2013-04-07/2013-04-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20130427 +DTEND;VALUE=DATE:20130429 +DTSTAMP;VALUE=DATE:20130427 +UID:2013-04-27/2013-04-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20130429 +DTEND;VALUE=DATE:20130502 +DTSTAMP;VALUE=DATE:20130429 +UID:2013-04-29/2013-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20130608 +DTEND;VALUE=DATE:20130610 +DTSTAMP;VALUE=DATE:20130608 +UID:2013-06-08/2013-06-10/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20130610 +DTEND;VALUE=DATE:20130613 +DTSTAMP;VALUE=DATE:20130610 +UID:2013-06-10/2013-06-13/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20130919 +DTEND;VALUE=DATE:20130922 +DTSTAMP;VALUE=DATE:20130919 +UID:2013-09-19/2013-09-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节假期) +DTSTART;VALUE=DATE:20130922 +DTEND;VALUE=DATE:20130923 +DTSTAMP;VALUE=DATE:20130922 +UID:2013-09-22/2013-09-23/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20130929 +DTEND;VALUE=DATE:20130930 +DTSTAMP;VALUE=DATE:20130929 +UID:2013-09-29/2013-09-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20131001 +DTEND;VALUE=DATE:20131008 +DTSTAMP;VALUE=DATE:20131001 +UID:2013-10-01/2013-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20131012 +DTEND;VALUE=DATE:20131013 +DTSTAMP;VALUE=DATE:20131012 +UID:2013-10-12/2013-10-13/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2014.ics b/2014.ics new file mode 100644 index 0000000..ccbce12 --- /dev/null +++ b/2014.ics @@ -0,0 +1,104 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20140101 +DTEND;VALUE=DATE:20140102 +DTSTAMP;VALUE=DATE:20140101 +UID:2014-01-01/2014-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20140126 +DTEND;VALUE=DATE:20140127 +DTSTAMP;VALUE=DATE:20140126 +UID:2014-01-26/2014-01-27/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20140131 +DTEND;VALUE=DATE:20140207 +DTSTAMP;VALUE=DATE:20140131 +UID:2014-01-31/2014-02-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20140208 +DTEND;VALUE=DATE:20140209 +DTSTAMP;VALUE=DATE:20140208 +UID:2014-02-08/2014-02-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20140405 +DTEND;VALUE=DATE:20140406 +DTSTAMP;VALUE=DATE:20140405 +UID:2014-04-05/2014-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20140407 +DTEND;VALUE=DATE:20140408 +DTSTAMP;VALUE=DATE:20140407 +UID:2014-04-07/2014-04-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20140501 +DTEND;VALUE=DATE:20140504 +DTSTAMP;VALUE=DATE:20140501 +UID:2014-05-01/2014-05-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20140504 +DTEND;VALUE=DATE:20140505 +DTSTAMP;VALUE=DATE:20140504 +UID:2014-05-04/2014-05-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20140602 +DTEND;VALUE=DATE:20140603 +DTSTAMP;VALUE=DATE:20140602 +UID:2014-06-02/2014-06-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20140908 +DTEND;VALUE=DATE:20140909 +DTSTAMP;VALUE=DATE:20140908 +UID:2014-09-08/2014-09-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20140928 +DTEND;VALUE=DATE:20140929 +DTSTAMP;VALUE=DATE:20140928 +UID:2014-09-28/2014-09-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20141001 +DTEND;VALUE=DATE:20141008 +DTSTAMP;VALUE=DATE:20141001 +UID:2014-10-01/2014-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20141011 +DTEND;VALUE=DATE:20141012 +DTSTAMP;VALUE=DATE:20141011 +UID:2014-10-11/2014-10-12/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2015.ics b/2015.ics new file mode 100644 index 0000000..93d8464 --- /dev/null +++ b/2015.ics @@ -0,0 +1,113 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20150101 +DTEND;VALUE=DATE:20150104 +DTSTAMP;VALUE=DATE:20150101 +UID:2015-01-01/2015-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20150104 +DTEND;VALUE=DATE:20150105 +DTSTAMP;VALUE=DATE:20150104 +UID:2015-01-04/2015-01-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20150215 +DTEND;VALUE=DATE:20150216 +DTSTAMP;VALUE=DATE:20150215 +UID:2015-02-15/2015-02-16/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20150218 +DTEND;VALUE=DATE:20150225 +DTSTAMP;VALUE=DATE:20150218 +UID:2015-02-18/2015-02-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20150228 +DTEND;VALUE=DATE:20150301 +DTSTAMP;VALUE=DATE:20150228 +UID:2015-02-28/2015-03-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20150405 +DTEND;VALUE=DATE:20150407 +DTSTAMP;VALUE=DATE:20150405 +UID:2015-04-05/2015-04-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20150501 +DTEND;VALUE=DATE:20150502 +DTSTAMP;VALUE=DATE:20150501 +UID:2015-05-01/2015-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20150620 +DTEND;VALUE=DATE:20150621 +DTSTAMP;VALUE=DATE:20150620 +UID:2015-06-20/2015-06-21/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20150622 +DTEND;VALUE=DATE:20150623 +DTSTAMP;VALUE=DATE:20150622 +UID:2015-06-22/2015-06-23/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:抗日战争暨世界反法西斯战争胜利70周年纪念日假 + 期 +DTSTART;VALUE=DATE:20150903 +DTEND;VALUE=DATE:20150906 +DTSTAMP;VALUE=DATE:20150903 +UID:2015-09-03/2015-09-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补抗日战争暨世界反法西斯战争胜利70周年纪 + 念日假期) +DTSTART;VALUE=DATE:20150906 +DTEND;VALUE=DATE:20150907 +DTSTAMP;VALUE=DATE:20150906 +UID:2015-09-06/2015-09-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20150927 +DTEND;VALUE=DATE:20150928 +DTSTAMP;VALUE=DATE:20150927 +UID:2015-09-27/2015-09-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20151001 +DTEND;VALUE=DATE:20151008 +DTSTAMP;VALUE=DATE:20151001 +UID:2015-10-01/2015-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20151010 +DTEND;VALUE=DATE:20151011 +DTSTAMP;VALUE=DATE:20151010 +UID:2015-10-10/2015-10-11/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2016.ics b/2016.ics new file mode 100644 index 0000000..194b866 --- /dev/null +++ b/2016.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20160101 +DTEND;VALUE=DATE:20160102 +DTSTAMP;VALUE=DATE:20160101 +UID:2016-01-01/2016-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20160206 +DTEND;VALUE=DATE:20160207 +DTSTAMP;VALUE=DATE:20160206 +UID:2016-02-06/2016-02-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20160207 +DTEND;VALUE=DATE:20160214 +DTSTAMP;VALUE=DATE:20160207 +UID:2016-02-07/2016-02-14/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20160214 +DTEND;VALUE=DATE:20160215 +DTSTAMP;VALUE=DATE:20160214 +UID:2016-02-14/2016-02-15/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20160404 +DTEND;VALUE=DATE:20160405 +DTSTAMP;VALUE=DATE:20160404 +UID:2016-04-04/2016-04-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20160501 +DTEND;VALUE=DATE:20160503 +DTSTAMP;VALUE=DATE:20160501 +UID:2016-05-01/2016-05-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20160609 +DTEND;VALUE=DATE:20160612 +DTSTAMP;VALUE=DATE:20160609 +UID:2016-06-09/2016-06-12/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20160612 +DTEND;VALUE=DATE:20160613 +DTSTAMP;VALUE=DATE:20160612 +UID:2016-06-12/2016-06-13/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20160915 +DTEND;VALUE=DATE:20160918 +DTSTAMP;VALUE=DATE:20160915 +UID:2016-09-15/2016-09-18/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节假期) +DTSTART;VALUE=DATE:20160918 +DTEND;VALUE=DATE:20160919 +DTSTAMP;VALUE=DATE:20160918 +UID:2016-09-18/2016-09-19/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20161001 +DTEND;VALUE=DATE:20161008 +DTSTAMP;VALUE=DATE:20161001 +UID:2016-10-01/2016-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20161008 +DTEND;VALUE=DATE:20161010 +DTSTAMP;VALUE=DATE:20161008 +UID:2016-10-08/2016-10-10/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2017.ics b/2017.ics new file mode 100644 index 0000000..a913731 --- /dev/null +++ b/2017.ics @@ -0,0 +1,90 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20170101 +DTEND;VALUE=DATE:20170103 +DTSTAMP;VALUE=DATE:20170101 +UID:2017-01-01/2017-01-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20170122 +DTEND;VALUE=DATE:20170123 +DTSTAMP;VALUE=DATE:20170122 +UID:2017-01-22/2017-01-23/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20170127 +DTEND;VALUE=DATE:20170203 +DTSTAMP;VALUE=DATE:20170127 +UID:2017-01-27/2017-02-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20170204 +DTEND;VALUE=DATE:20170205 +DTSTAMP;VALUE=DATE:20170204 +UID:2017-02-04/2017-02-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20170401 +DTEND;VALUE=DATE:20170402 +DTSTAMP;VALUE=DATE:20170401 +UID:2017-04-01/2017-04-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20170402 +DTEND;VALUE=DATE:20170405 +DTSTAMP;VALUE=DATE:20170402 +UID:2017-04-02/2017-04-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20170501 +DTEND;VALUE=DATE:20170502 +DTSTAMP;VALUE=DATE:20170501 +UID:2017-05-01/2017-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20170527 +DTEND;VALUE=DATE:20170528 +DTSTAMP;VALUE=DATE:20170527 +UID:2017-05-27/2017-05-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20170528 +DTEND;VALUE=DATE:20170531 +DTSTAMP;VALUE=DATE:20170528 +UID:2017-05-28/2017-05-31/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节、国庆节假期) +DTSTART;VALUE=DATE:20170930 +DTEND;VALUE=DATE:20171001 +DTSTAMP;VALUE=DATE:20170930 +UID:2017-09-30/2017-10-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节、国庆节假期 +DTSTART;VALUE=DATE:20171001 +DTEND;VALUE=DATE:20171009 +DTSTAMP;VALUE=DATE:20171001 +UID:2017-10-01/2017-10-09/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2018.ics b/2018.ics new file mode 100644 index 0000000..ca62d5c --- /dev/null +++ b/2018.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20180101 +DTEND;VALUE=DATE:20180102 +DTSTAMP;VALUE=DATE:20180101 +UID:2018-01-01/2018-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20180211 +DTEND;VALUE=DATE:20180212 +DTSTAMP;VALUE=DATE:20180211 +UID:2018-02-11/2018-02-12/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20180215 +DTEND;VALUE=DATE:20180222 +DTSTAMP;VALUE=DATE:20180215 +UID:2018-02-15/2018-02-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20180224 +DTEND;VALUE=DATE:20180225 +DTSTAMP;VALUE=DATE:20180224 +UID:2018-02-24/2018-02-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20180405 +DTEND;VALUE=DATE:20180408 +DTSTAMP;VALUE=DATE:20180405 +UID:2018-04-05/2018-04-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20180408 +DTEND;VALUE=DATE:20180409 +DTSTAMP;VALUE=DATE:20180408 +UID:2018-04-08/2018-04-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20180428 +DTEND;VALUE=DATE:20180429 +DTSTAMP;VALUE=DATE:20180428 +UID:2018-04-28/2018-04-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20180429 +DTEND;VALUE=DATE:20180502 +DTSTAMP;VALUE=DATE:20180429 +UID:2018-04-29/2018-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20180618 +DTEND;VALUE=DATE:20180619 +DTSTAMP;VALUE=DATE:20180618 +UID:2018-06-18/2018-06-19/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20180924 +DTEND;VALUE=DATE:20180925 +DTSTAMP;VALUE=DATE:20180924 +UID:2018-09-24/2018-09-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20180929 +DTEND;VALUE=DATE:20181001 +DTSTAMP;VALUE=DATE:20180929 +UID:2018-09-29/2018-10-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20181001 +DTEND;VALUE=DATE:20181008 +DTSTAMP;VALUE=DATE:20181001 +UID:2018-10-01/2018-10-08/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2019.ics b/2019.ics new file mode 100644 index 0000000..e6caf3a --- /dev/null +++ b/2019.ics @@ -0,0 +1,104 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20181229 +DTEND;VALUE=DATE:20181230 +DTSTAMP;VALUE=DATE:20181229 +UID:2018-12-29/2018-12-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20181230 +DTEND;VALUE=DATE:20190102 +DTSTAMP;VALUE=DATE:20181230 +UID:2018-12-30/2019-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20190202 +DTEND;VALUE=DATE:20190204 +DTSTAMP;VALUE=DATE:20190202 +UID:2019-02-02/2019-02-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20190204 +DTEND;VALUE=DATE:20190211 +DTSTAMP;VALUE=DATE:20190204 +UID:2019-02-04/2019-02-11/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20190405 +DTEND;VALUE=DATE:20190406 +DTSTAMP;VALUE=DATE:20190405 +UID:2019-04-05/2019-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20190428 +DTEND;VALUE=DATE:20190429 +DTSTAMP;VALUE=DATE:20190428 +UID:2019-04-28/2019-04-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20190501 +DTEND;VALUE=DATE:20190505 +DTSTAMP;VALUE=DATE:20190501 +UID:2019-05-01/2019-05-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20190505 +DTEND;VALUE=DATE:20190506 +DTSTAMP;VALUE=DATE:20190505 +UID:2019-05-05/2019-05-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20190607 +DTEND;VALUE=DATE:20190608 +DTSTAMP;VALUE=DATE:20190607 +UID:2019-06-07/2019-06-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20190913 +DTEND;VALUE=DATE:20190914 +DTSTAMP;VALUE=DATE:20190913 +UID:2019-09-13/2019-09-14/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20190929 +DTEND;VALUE=DATE:20190930 +DTSTAMP;VALUE=DATE:20190929 +UID:2019-09-29/2019-09-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20191001 +DTEND;VALUE=DATE:20191008 +DTSTAMP;VALUE=DATE:20191001 +UID:2019-10-01/2019-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20191012 +DTEND;VALUE=DATE:20191013 +DTSTAMP;VALUE=DATE:20191012 +UID:2019-10-12/2019-10-13/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2020.ics b/2020.ics new file mode 100644 index 0000000..27639c1 --- /dev/null +++ b/2020.ics @@ -0,0 +1,104 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20200101 +DTEND;VALUE=DATE:20200102 +DTSTAMP;VALUE=DATE:20200101 +UID:2020-01-01/2020-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20200119 +DTEND;VALUE=DATE:20200120 +DTSTAMP;VALUE=DATE:20200119 +UID:2020-01-19/2020-01-20/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20200124 +DTEND;VALUE=DATE:20200203 +DTSTAMP;VALUE=DATE:20200124 +UID:2020-01-24/2020-02-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20200203 +DTEND;VALUE=DATE:20200204 +DTSTAMP;VALUE=DATE:20200203 +UID:2020-02-03/2020-02-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20200404 +DTEND;VALUE=DATE:20200407 +DTSTAMP;VALUE=DATE:20200404 +UID:2020-04-04/2020-04-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20200426 +DTEND;VALUE=DATE:20200427 +DTSTAMP;VALUE=DATE:20200426 +UID:2020-04-26/2020-04-27/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20200501 +DTEND;VALUE=DATE:20200506 +DTSTAMP;VALUE=DATE:20200501 +UID:2020-05-01/2020-05-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20200509 +DTEND;VALUE=DATE:20200510 +DTSTAMP;VALUE=DATE:20200509 +UID:2020-05-09/2020-05-10/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20200625 +DTEND;VALUE=DATE:20200628 +DTSTAMP;VALUE=DATE:20200625 +UID:2020-06-25/2020-06-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20200628 +DTEND;VALUE=DATE:20200629 +DTSTAMP;VALUE=DATE:20200628 +UID:2020-06-28/2020-06-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节、中秋节假期) +DTSTART;VALUE=DATE:20200927 +DTEND;VALUE=DATE:20200928 +DTSTAMP;VALUE=DATE:20200927 +UID:2020-09-27/2020-09-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节、中秋节假期 +DTSTART;VALUE=DATE:20201001 +DTEND;VALUE=DATE:20201009 +DTSTAMP;VALUE=DATE:20201001 +UID:2020-10-01/2020-10-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节、中秋节假期) +DTSTART;VALUE=DATE:20201010 +DTEND;VALUE=DATE:20201011 +DTSTAMP;VALUE=DATE:20201010 +UID:2020-10-10/2020-10-11/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2021.ics b/2021.ics new file mode 100644 index 0000000..fdb1e79 --- /dev/null +++ b/2021.ics @@ -0,0 +1,111 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20210101 +DTEND;VALUE=DATE:20210104 +DTSTAMP;VALUE=DATE:20210101 +UID:2021-01-01/2021-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20210207 +DTEND;VALUE=DATE:20210208 +DTSTAMP;VALUE=DATE:20210207 +UID:2021-02-07/2021-02-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20210211 +DTEND;VALUE=DATE:20210218 +DTSTAMP;VALUE=DATE:20210211 +UID:2021-02-11/2021-02-18/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20210220 +DTEND;VALUE=DATE:20210221 +DTSTAMP;VALUE=DATE:20210220 +UID:2021-02-20/2021-02-21/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20210403 +DTEND;VALUE=DATE:20210406 +DTSTAMP;VALUE=DATE:20210403 +UID:2021-04-03/2021-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20210425 +DTEND;VALUE=DATE:20210426 +DTSTAMP;VALUE=DATE:20210425 +UID:2021-04-25/2021-04-26/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20210501 +DTEND;VALUE=DATE:20210506 +DTSTAMP;VALUE=DATE:20210501 +UID:2021-05-01/2021-05-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20210508 +DTEND;VALUE=DATE:20210509 +DTSTAMP;VALUE=DATE:20210508 +UID:2021-05-08/2021-05-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20210612 +DTEND;VALUE=DATE:20210615 +DTSTAMP;VALUE=DATE:20210612 +UID:2021-06-12/2021-06-15/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节假期) +DTSTART;VALUE=DATE:20210918 +DTEND;VALUE=DATE:20210919 +DTSTAMP;VALUE=DATE:20210918 +UID:2021-09-18/2021-09-19/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20210919 +DTEND;VALUE=DATE:20210922 +DTSTAMP;VALUE=DATE:20210919 +UID:2021-09-19/2021-09-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20210926 +DTEND;VALUE=DATE:20210927 +DTSTAMP;VALUE=DATE:20210926 +UID:2021-09-26/2021-09-27/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20211001 +DTEND;VALUE=DATE:20211008 +DTSTAMP;VALUE=DATE:20211001 +UID:2021-10-01/2021-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20211009 +DTEND;VALUE=DATE:20211010 +DTSTAMP;VALUE=DATE:20211009 +UID:2021-10-09/2021-10-10/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/2022.ics b/2022.ics new file mode 100644 index 0000000..7d24be1 --- /dev/null +++ b/2022.ics @@ -0,0 +1,13 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/conv_to_ics.py b/conv_to_ics.py new file mode 100644 index 0000000..b576a58 --- /dev/null +++ b/conv_to_ics.py @@ -0,0 +1,83 @@ +import datetime +from icalendar import Event, Calendar, Timezone, TimezoneStandard + + +def create_timezone(): + tz = Timezone() + tz.add('TZID', 'Asia/Shanghai') + + tz_standard = TimezoneStandard() + tz_standard.add('DTSTART', datetime.datetime(1970, 1, 1)) + tz_standard.add('TZOFFSETFROM', datetime.timedelta(hours=8)) + tz_standard.add('TZOFFSETTO', datetime.timedelta(hours=8)) + + tz.add_component(tz_standard) + return tz + + +def create_event(event_name, start, end): + # 创建事件/日程 + event = Event() + event.add('SUMMARY', event_name) + + event.add('DTSTART', start) + event.add('DTEND', end) + # 创建时间 + event.add('DTSTAMP', start) + + # UID保证唯一 + event['UID'] = f'{start}/{end}/NateScarlet/holiday-cn' + + return event + + +def ranger(lst): + if len(lst) == 0: + return [] + + if len(lst) == 1: + return [(lst[0], lst[0])] + + fr, to = lst[0], lst[0] + for cur in lst[1:]: + if (cur.get('date') - to.get('date')).days == 1 \ + and cur.get('isOffDay') == to.get('isOffDay'): + to = cur + else: + yield fr, to + fr, to = cur, cur + yield fr, to + + +def conv_json_to_ics(data, filename): + """ + 将爬取的节假日JSON数据转换为ICS + + Args: + filename: str + data: from `fetch_holiday` + """ + cal = Calendar() + cal.add('VERSION', '2.0') + cal.add('METHOD', 'PUBLISH') + cal.add('CLASS', 'PUBLIC') + + cal.add_component(create_timezone()) + + days = data.get('days', []) + for day in days: + if isinstance(day.get('date'), str): + day['date'] = datetime.date(*map(int, day['date'].split('-'))) + + for fr, to in ranger(days): + start = fr.get('date') + end = to.get('date') + datetime.timedelta(days=1) + + name = fr.get('name') + "假期" + if not fr.get('isOffDay'): + name = "上班(补" + name + ")" + cal.add_component(create_event(name, start, end)) + + with open(f'{filename}.ics', 'wb') as ics: + ics.write(cal.to_ical()) + diff --git a/holiday_cn.ics b/holiday_cn.ics new file mode 100644 index 0000000..986822f --- /dev/null +++ b/holiday_cn.ics @@ -0,0 +1,454 @@ +BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CLASS:PUBLIC +BEGIN:VTIMEZONE +TZID:Asia/Shanghai +BEGIN:STANDARD +DTSTART;VALUE=DATE-TIME:19700101T000000 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20170101 +DTEND;VALUE=DATE:20170103 +DTSTAMP;VALUE=DATE:20170101 +UID:2017-01-01/2017-01-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20170122 +DTEND;VALUE=DATE:20170123 +DTSTAMP;VALUE=DATE:20170122 +UID:2017-01-22/2017-01-23/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20170127 +DTEND;VALUE=DATE:20170203 +DTSTAMP;VALUE=DATE:20170127 +UID:2017-01-27/2017-02-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20170204 +DTEND;VALUE=DATE:20170205 +DTSTAMP;VALUE=DATE:20170204 +UID:2017-02-04/2017-02-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20170401 +DTEND;VALUE=DATE:20170402 +DTSTAMP;VALUE=DATE:20170401 +UID:2017-04-01/2017-04-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20170402 +DTEND;VALUE=DATE:20170405 +DTSTAMP;VALUE=DATE:20170402 +UID:2017-04-02/2017-04-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20170501 +DTEND;VALUE=DATE:20170502 +DTSTAMP;VALUE=DATE:20170501 +UID:2017-05-01/2017-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20170527 +DTEND;VALUE=DATE:20170528 +DTSTAMP;VALUE=DATE:20170527 +UID:2017-05-27/2017-05-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20170528 +DTEND;VALUE=DATE:20170531 +DTSTAMP;VALUE=DATE:20170528 +UID:2017-05-28/2017-05-31/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节、国庆节假期) +DTSTART;VALUE=DATE:20170930 +DTEND;VALUE=DATE:20171001 +DTSTAMP;VALUE=DATE:20170930 +UID:2017-09-30/2017-10-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节、国庆节假期 +DTSTART;VALUE=DATE:20171001 +DTEND;VALUE=DATE:20171009 +DTSTAMP;VALUE=DATE:20171001 +UID:2017-10-01/2017-10-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20180101 +DTEND;VALUE=DATE:20180102 +DTSTAMP;VALUE=DATE:20180101 +UID:2018-01-01/2018-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20180211 +DTEND;VALUE=DATE:20180212 +DTSTAMP;VALUE=DATE:20180211 +UID:2018-02-11/2018-02-12/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20180215 +DTEND;VALUE=DATE:20180222 +DTSTAMP;VALUE=DATE:20180215 +UID:2018-02-15/2018-02-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20180224 +DTEND;VALUE=DATE:20180225 +DTSTAMP;VALUE=DATE:20180224 +UID:2018-02-24/2018-02-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20180405 +DTEND;VALUE=DATE:20180408 +DTSTAMP;VALUE=DATE:20180405 +UID:2018-04-05/2018-04-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补清明节假期) +DTSTART;VALUE=DATE:20180408 +DTEND;VALUE=DATE:20180409 +DTSTAMP;VALUE=DATE:20180408 +UID:2018-04-08/2018-04-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20180428 +DTEND;VALUE=DATE:20180429 +DTSTAMP;VALUE=DATE:20180428 +UID:2018-04-28/2018-04-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20180429 +DTEND;VALUE=DATE:20180502 +DTSTAMP;VALUE=DATE:20180429 +UID:2018-04-29/2018-05-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20180618 +DTEND;VALUE=DATE:20180619 +DTSTAMP;VALUE=DATE:20180618 +UID:2018-06-18/2018-06-19/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20180924 +DTEND;VALUE=DATE:20180925 +DTSTAMP;VALUE=DATE:20180924 +UID:2018-09-24/2018-09-25/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20180929 +DTEND;VALUE=DATE:20181001 +DTSTAMP;VALUE=DATE:20180929 +UID:2018-09-29/2018-10-01/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20181001 +DTEND;VALUE=DATE:20181008 +DTSTAMP;VALUE=DATE:20181001 +UID:2018-10-01/2018-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补元旦假期) +DTSTART;VALUE=DATE:20181229 +DTEND;VALUE=DATE:20181230 +DTSTAMP;VALUE=DATE:20181229 +UID:2018-12-29/2018-12-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20181230 +DTEND;VALUE=DATE:20190102 +DTSTAMP;VALUE=DATE:20181230 +UID:2018-12-30/2019-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20190202 +DTEND;VALUE=DATE:20190204 +DTSTAMP;VALUE=DATE:20190202 +UID:2019-02-02/2019-02-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20190204 +DTEND;VALUE=DATE:20190211 +DTSTAMP;VALUE=DATE:20190204 +UID:2019-02-04/2019-02-11/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20190405 +DTEND;VALUE=DATE:20190406 +DTSTAMP;VALUE=DATE:20190405 +UID:2019-04-05/2019-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20190428 +DTEND;VALUE=DATE:20190429 +DTSTAMP;VALUE=DATE:20190428 +UID:2019-04-28/2019-04-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20190501 +DTEND;VALUE=DATE:20190505 +DTSTAMP;VALUE=DATE:20190501 +UID:2019-05-01/2019-05-05/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20190505 +DTEND;VALUE=DATE:20190506 +DTSTAMP;VALUE=DATE:20190505 +UID:2019-05-05/2019-05-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20190607 +DTEND;VALUE=DATE:20190608 +DTSTAMP;VALUE=DATE:20190607 +UID:2019-06-07/2019-06-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20190913 +DTEND;VALUE=DATE:20190914 +DTSTAMP;VALUE=DATE:20190913 +UID:2019-09-13/2019-09-14/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20190929 +DTEND;VALUE=DATE:20190930 +DTSTAMP;VALUE=DATE:20190929 +UID:2019-09-29/2019-09-30/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20191001 +DTEND;VALUE=DATE:20191008 +DTSTAMP;VALUE=DATE:20191001 +UID:2019-10-01/2019-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20191012 +DTEND;VALUE=DATE:20191013 +DTSTAMP;VALUE=DATE:20191012 +UID:2019-10-12/2019-10-13/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20200101 +DTEND;VALUE=DATE:20200102 +DTSTAMP;VALUE=DATE:20200101 +UID:2020-01-01/2020-01-02/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20200119 +DTEND;VALUE=DATE:20200120 +DTSTAMP;VALUE=DATE:20200119 +UID:2020-01-19/2020-01-20/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20200124 +DTEND;VALUE=DATE:20200203 +DTSTAMP;VALUE=DATE:20200124 +UID:2020-01-24/2020-02-03/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20200203 +DTEND;VALUE=DATE:20200204 +DTSTAMP;VALUE=DATE:20200203 +UID:2020-02-03/2020-02-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20200404 +DTEND;VALUE=DATE:20200407 +DTSTAMP;VALUE=DATE:20200404 +UID:2020-04-04/2020-04-07/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20200426 +DTEND;VALUE=DATE:20200427 +DTSTAMP;VALUE=DATE:20200426 +UID:2020-04-26/2020-04-27/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20200501 +DTEND;VALUE=DATE:20200506 +DTSTAMP;VALUE=DATE:20200501 +UID:2020-05-01/2020-05-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20200509 +DTEND;VALUE=DATE:20200510 +DTSTAMP;VALUE=DATE:20200509 +UID:2020-05-09/2020-05-10/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20200625 +DTEND;VALUE=DATE:20200628 +DTSTAMP;VALUE=DATE:20200625 +UID:2020-06-25/2020-06-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补端午节假期) +DTSTART;VALUE=DATE:20200628 +DTEND;VALUE=DATE:20200629 +DTSTAMP;VALUE=DATE:20200628 +UID:2020-06-28/2020-06-29/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节、中秋节假期) +DTSTART;VALUE=DATE:20200927 +DTEND;VALUE=DATE:20200928 +DTSTAMP;VALUE=DATE:20200927 +UID:2020-09-27/2020-09-28/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节、中秋节假期 +DTSTART;VALUE=DATE:20201001 +DTEND;VALUE=DATE:20201009 +DTSTAMP;VALUE=DATE:20201001 +UID:2020-10-01/2020-10-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节、中秋节假期) +DTSTART;VALUE=DATE:20201010 +DTEND;VALUE=DATE:20201011 +DTSTAMP;VALUE=DATE:20201010 +UID:2020-10-10/2020-10-11/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:元旦假期 +DTSTART;VALUE=DATE:20210101 +DTEND;VALUE=DATE:20210104 +DTSTAMP;VALUE=DATE:20210101 +UID:2021-01-01/2021-01-04/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20210207 +DTEND;VALUE=DATE:20210208 +DTSTAMP;VALUE=DATE:20210207 +UID:2021-02-07/2021-02-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:春节假期 +DTSTART;VALUE=DATE:20210211 +DTEND;VALUE=DATE:20210218 +DTSTAMP;VALUE=DATE:20210211 +UID:2021-02-11/2021-02-18/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补春节假期) +DTSTART;VALUE=DATE:20210220 +DTEND;VALUE=DATE:20210221 +DTSTAMP;VALUE=DATE:20210220 +UID:2021-02-20/2021-02-21/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:清明节假期 +DTSTART;VALUE=DATE:20210403 +DTEND;VALUE=DATE:20210406 +DTSTAMP;VALUE=DATE:20210403 +UID:2021-04-03/2021-04-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20210425 +DTEND;VALUE=DATE:20210426 +DTSTAMP;VALUE=DATE:20210425 +UID:2021-04-25/2021-04-26/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:劳动节假期 +DTSTART;VALUE=DATE:20210501 +DTEND;VALUE=DATE:20210506 +DTSTAMP;VALUE=DATE:20210501 +UID:2021-05-01/2021-05-06/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补劳动节假期) +DTSTART;VALUE=DATE:20210508 +DTEND;VALUE=DATE:20210509 +DTSTAMP;VALUE=DATE:20210508 +UID:2021-05-08/2021-05-09/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:端午节假期 +DTSTART;VALUE=DATE:20210612 +DTEND;VALUE=DATE:20210615 +DTSTAMP;VALUE=DATE:20210612 +UID:2021-06-12/2021-06-15/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补中秋节假期) +DTSTART;VALUE=DATE:20210918 +DTEND;VALUE=DATE:20210919 +DTSTAMP;VALUE=DATE:20210918 +UID:2021-09-18/2021-09-19/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:中秋节假期 +DTSTART;VALUE=DATE:20210919 +DTEND;VALUE=DATE:20210922 +DTSTAMP;VALUE=DATE:20210919 +UID:2021-09-19/2021-09-22/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20210926 +DTEND;VALUE=DATE:20210927 +DTSTAMP;VALUE=DATE:20210926 +UID:2021-09-26/2021-09-27/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:国庆节假期 +DTSTART;VALUE=DATE:20211001 +DTEND;VALUE=DATE:20211008 +DTSTAMP;VALUE=DATE:20211001 +UID:2021-10-01/2021-10-08/NateScarlet/holiday-cn +END:VEVENT +BEGIN:VEVENT +SUMMARY:上班(补国庆节假期) +DTSTART;VALUE=DATE:20211009 +DTEND;VALUE=DATE:20211010 +DTSTAMP;VALUE=DATE:20211009 +UID:2021-10-09/2021-10-10/NateScarlet/holiday-cn +END:VEVENT +END:VCALENDAR diff --git a/requirements.txt b/requirements.txt index fb2217c..9a5fb57 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ requests==2.26.0 beautifulsoup4==4.10.0 tqdm==4.62.3 +icalendar==4.0.8 \ No newline at end of file diff --git a/update.py b/update.py index d1e7885..eb36b34 100755 --- a/update.py +++ b/update.py @@ -13,6 +13,7 @@ from zipfile import ZipFile from tqdm import tqdm from fetch_holidays import CustomJSONEncoder, fetch_holiday +from conv_to_ics import conv_json_to_ics class ChinaTimezone(tzinfo): @@ -61,9 +62,24 @@ def update_data(year: int) -> str: indent=4, ensure_ascii=False, cls=CustomJSONEncoder) + + conv_json_to_ics(data, filename=f'{year}') return filename +def update_holiday_ics(fr_year, to_year): + big_days = [] + for year in range(fr_year, to_year+1): + filename = _file_path(f'{year}.json') + if not os.path.isfile(filename): + continue + with open(filename, 'r') as inf: + data = json.loads(inf.read()) + big_days.extend(data.get('days')) + + conv_json_to_ics({"days": sorted(big_days, key=lambda x: x["date"])}, filename='holiday_cn') + + def main(): parser = argparse.ArgumentParser() parser.add_argument('--all', action='store_true', @@ -84,7 +100,7 @@ def main(): print('') subprocess.run(['hub', 'add', *filenames], check=True) - diff = subprocess.run(['hub', 'diff', '--stat', '--cached', '*.json'], + diff = subprocess.run(['hub', 'diff', '--stat', '--cached', '*.json', '*.ics'], check=True, stdout=subprocess.PIPE, encoding='utf-8').stdout @@ -92,6 +108,8 @@ def main(): print('Already up to date.') return + update_holiday_ics(now.year-4, now.year+1) + if not is_release: print('Updated repository data, skip release since not specified `--release`') return