2022-08-24 06:16:27 +00:00
|
|
|
// date
|
2022-08-29 20:58:19 +00:00
|
|
|
package models
|
2022-08-24 06:16:27 +00:00
|
|
|
|
|
|
|
type Date struct {
|
2022-08-31 20:49:14 +00:00
|
|
|
Week int
|
2022-08-24 06:16:27 +00:00
|
|
|
Day int
|
|
|
|
Hour int
|
|
|
|
Minute int
|
|
|
|
}
|
2022-08-29 20:58:19 +00:00
|
|
|
|
|
|
|
const MinuteGranularity int = 5
|
2022-09-05 15:55:08 +00:00
|
|
|
|
|
|
|
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 ""
|
|
|
|
}
|
|
|
|
}
|
2022-09-07 16:26:05 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|