55 строки
1.3 KiB
Go
55 строки
1.3 KiB
Go
// 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
|
|
}
|