Files
htwkalender-pwa/backend/service/date/dateFormat.go

48 lines
1.5 KiB
Go

package date
import "time"
func GetDateFromWeekNumber(year int, weekNumber int, dayName string) (time.Time, error) {
// Create a time.Date for the first day of the year
firstDayOfYear := time.Date(year, time.January, 1, 0, 0, 0, 0, time.UTC)
// Calculate the number of days to add to reach the desired week
daysToAdd := time.Duration((weekNumber-1)*7) * 24 * time.Hour
// Find the starting day of the week (e.g., Monday)
startingDayOfWeek := firstDayOfYear
// check if the first day of the year is friday or saturday or sunday
if startingDayOfWeek.Weekday() == time.Friday || startingDayOfWeek.Weekday() == time.Saturday || startingDayOfWeek.Weekday() == time.Sunday {
for startingDayOfWeek.Weekday() != time.Monday {
startingDayOfWeek = startingDayOfWeek.Add(24 * time.Hour)
}
} else {
for startingDayOfWeek.Weekday() != time.Monday {
startingDayOfWeek = startingDayOfWeek.Add(-24 * time.Hour)
}
}
// Calculate the desired date by adding daysToAdd and adjusting for the day name
desiredDate := startingDayOfWeek.Add(daysToAdd)
// Find the day of the week
dayOfWeek := map[string]time.Weekday{
"Montag": time.Monday,
"Dienstag": time.Tuesday,
"Mittwoch": time.Wednesday,
"Donnerstag": time.Thursday,
"Freitag": time.Friday,
"Samstag": time.Saturday,
"Sonntag": time.Sunday,
}[dayName]
// Adjust to the desired day of the week
for desiredDate.Weekday() != dayOfWeek {
desiredDate = desiredDate.Add(24 * time.Hour)
}
return desiredDate, nil
}