日历包装纸
gregorian的Python项目详细描述
公历
gregorian提供了一个Calendar
类来管理自定义日历。
安装
安装Gregorian
的最佳和最简单的方法是调用:
pipinstallgregorian
用法
importdatetimefromgregorianimportCalendar,utils#every day in 2019calendar=Calendar.generate(datetime.date(2019,1,1),periods=365,freq="D")#weekendsweekends=calendar.weekends()#week daysweekdays=calendar.weekdays()#first and last dateweekdays.first(),weekdays.last()#or sliceweekdays[0],weekdays[-1]#10th weekday each monthb10=weekdays.groupby("month").apply(lambdacal:cal[10])#5th to 10th weekday each monthb5to10=weekdays.groupby("month").apply(lambdacal:cal[5:10])#set-like operationsholidays=[datetime.date(2019,1,1),datetime.date(2019,1,21),datetime.date(2019,2,18),datetime.date(2019,5,27),datetime.date(2019,7,4),datetime.date(2019,9,2),datetime.date(2019,10,14),datetime.date(2019,11,11),datetime.date(2019,11,28),datetime.date(2019,12,25)]#business daysworkdays=weekdays.intersection(holidays)#... alternativelyworkdays=holidays.inverse(datetime.date(2019,1,1),datetime.date(2019,12,31)).weekdays()#non-weekend holidaysoffdays=weekdays.union(holidays)#is my birthday a weekday?datetime.date(2019,6,17)inweekdays>>True#summer workdayssummer=workdays[datetime.date(2019,6,21):datetime.date(2019,9,20)]#index of given date in given frequencyworkdays.dayof(datetime.date(2019,8,14),"month")>>8#a few utilitiesutils.isleap(2016),utils.isleap(datetime.date(2019,6,17))>>True,False#end of monthutils.eom(datetime.date(2016,2,14),0),utils.eom(datetime.date(2016,2,14),-1)>>datetime.date(2019,2,29),datetime.date(2019,1,31)