Files
worker/internal/workdays/workdays.go
Gleb Tv 2c7a0236da feat: publish standalone worker
Separate worker packaging and service lifecycle from the control plane.
2026-07-13 17:55:14 +03:00

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
}