59 lines
1.1 KiB
Go
59 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
|
|
}
|