// Package workdays provides functionality. package workdays import ( "strconv" "time" "github.com/rickar/cal/v2" ) // NewHoliday provides functionality. func NewHoliday(month time.Month, day int) *cal.Holiday { return &cal.Holiday{ Name: month.String() + " " + strconv.Itoa(day), Month: month, Day: day, Func: cal.CalcDayOfMonth, } } // GetCalendar provides functionality. func GetCalendar() *cal.BusinessCalendar { c := cal.NewBusinessCalendar() // add holidays for the business c.AddHoliday( NewHoliday(time.January, 1), NewHoliday(time.January, 2), NewHoliday(time.January, 3), NewHoliday(time.January, 4), NewHoliday(time.January, 5), NewHoliday(time.January, 6), NewHoliday(time.January, 7), NewHoliday(time.January, 8), NewHoliday(time.February, 23), NewHoliday(time.March, 8), NewHoliday(time.May, 1), NewHoliday(time.May, 9), NewHoliday(time.June, 12), NewHoliday(time.November, 4), NewHoliday(time.December, 30), NewHoliday(time.December, 31), ) // optionally change the holiday calculation behavior // (the default is US-style where weekend holidays are // observed on the closest weekday) // c.Observed = cal.ObservedExact c.SetWorkday(time.Saturday, true) c.SetWorkday(time.Sunday, true) return c }