sprechstunden-go/models/date.go

60 lines
1.1 KiB
Go

// date
package models
type Date struct {
Week int
Day int
Hour int
Minute int
}
const MinuteGranularity int = 5
func DayName(day int) string {
switch day {
case 0:
return "Montag"
case 1:
return "Dienstag"
case 2:
return "Mittwoch"
case 3:
return "Donnerstag"
case 4:
return "Freitag"
default:
return ""
}
}
func DateLess(first Date, second Date) bool {
if first.Day < second.Day {
return true
} else if first.Day > second.Day {
return false
}
if first.Hour < second.Hour {
return true
} else if first.Hour > second.Hour {
return false
}
if first.Minute < second.Minute {
return true
} else if first.Minute > second.Minute {
return false
}
return false
}
func GetEndDate(date Date, duration int, ignoreWeek bool) Date {
var endDate Date
if ignoreWeek {
endDate = Date{0, date.Day, date.Hour, date.Minute} // deep copy
} else {
endDate = Date{date.Week, date.Day, date.Hour, date.Minute}
}
endDate.Hour = endDate.Hour + (endDate.Minute+duration)/60
endDate.Minute = (endDate.Minute + duration) % 60
return endDate
}