本文主要是介绍应用iCalendar库Biweekly求2021年工作日及油价调整时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
应用iCalendar库Biweekly求2021年工作日及油价调整时间
iCalendar有关于重复日程的描述,这里尝试使用这方面描述,并结合用Java语言编写的iCalendar库——Biweekly进行编程。选择描述2021年工作日,再求出具体日期,最后计算2021年油价调整日期作为应用案例。
工作日分成3部分:
- 周一到周五
- 调班
- 调休
周一到周五就用RRULE描述成以星期为周期,直到年底:RRULE:FREQ=WEEKLY;UNTIL=20211231T00000Z;WKST=MO;BYDAY=MO,TU,WE,TH,FR
。调班就是周六日休假调整成上班时间,属于增加工作日,用RDATE表示;调休是节日遇上周一到五,要从工作日中去除,所以用EXDATE表示。根据国务院网站《国务院办公厅关于2021年部分节假日安排的通知》:
2021年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下。
一、元旦:2021年1月1日至3日放假,共3天。
二、春节:2月11日至17日放假调休,共7天。2月7日(星期日)、2月20日(星期六)上班。
三、清明节:4月3日至5日放假调休,共3天。
四、劳动节:5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。
五、端午节:6月12日至14日放假,共3天。
六、中秋节:9月19日至21日放假调休,共3天。9月18日(星期六)上班。
七、国庆节:10月1日至7日放假调休,共7天。9月26日(星期日)、10月9日(星期六)上班。
- 调班描述为:
RDATE;VALUE=DATE:20210207,20210220,20210425,20210508,20210918,20210926,20211009
; - 调休描述为:
EXDATE;VALUE=DATE:20210101,20210211,20210212,20210215,20210216,20210217,20210405,20210503,20210504,20210505,20210614,20210920,20210921,20211001,20211004,20211005,20211006,20211007
。
写成iCalendar文件workday2021.ics,就是:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Michael Angstadt//biweekly 0.6.3//EN
BEGIN:VEVENT
UID:c6e311c1-cbfe-451e-9548-b7bf575fbfcc
DTSTAMP:20201127T011040Z
SUMMARY:2021年工作日
RRULE:FREQ=WEEKLY;UNTIL=20211231T00000Z;WKST=MO;BYDAY=MO,TU,WE,TH,FR
RDATE;VALUE=DATE:20210207,20210220,20210425,20210508,20210918,20210926,20211009
EXDATE;VALUE=DATE:20210101,20210211,20210212,20210215,20210216,20210217,20210405,20210503,20210504,20210505,20210614,20210920,20210921,20211001,20211004,20211005,20211006,20211007
DTSTART;VALUE=DATE:20210101
DTEND;VALUE=DATE:20211231
END:VEVENT
END:VCALENDAR
然后就用Biweekly库来得到工作日的具体日期。下面是Java源码:
File file = new File("workday2021.ics");
List<ICalendar> icals = Biweekly.parse(file).all(<
这篇关于应用iCalendar库Biweekly求2021年工作日及油价调整时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!