Files
nlnieuws/internal/week/week.go
Peter Kleiweg 8289072a52 weekadd
2026-06-19 12:59:45 +02:00

31 lines
596 B
Go

package week
import (
"fmt"
"time"
)
// returns first date of week
func WeekDate(year, week int) (time.Time, error) {
// 1 januari
t := time.Date(year, 1, 1, 12, 0, 0, 0, time.UTC)
// zoek eerste donderdag
day := int(t.Weekday()) // 0 = zondag
donderdag := 4 - day
if donderdag < 0 {
donderdag = donderdag + 7
}
// schuif naar maandag voor eerste donderdag: donderdag - 3
// in de gewenste week: 7 * (week - 1)
t = t.AddDate(0, 0, donderdag-3+7*(week-1))
y, w := t.ISOWeek()
if y != year || w != week {
return t, fmt.Errorf("week number out of range")
}
return t, nil
}