41 lines
984 B
Go
41 lines
984 B
Go
package main
|
|
|
|
import (
|
|
// External
|
|
werr "git.gibonuddevalla.se/go/wrappederror"
|
|
|
|
// Standard
|
|
"time"
|
|
)
|
|
|
|
func timefilterParse(timeFromStr, timeToStr, offset, preset string) (timeFrom, timeTo time.Time, err error) {
|
|
if preset != "" {
|
|
presetTimeInterval(time.Hour, preset, &timeFrom, &timeTo)
|
|
return
|
|
}
|
|
|
|
yesterday := time.Now().Add(time.Duration(-24 * time.Hour))
|
|
timeFrom, err = parseHTMLDateTime(timeFromStr, yesterday)
|
|
if err != nil {
|
|
err = werr.Wrap(err).WithData(timeFromStr)
|
|
return
|
|
}
|
|
|
|
timeTo, err = parseHTMLDateTime(timeToStr, time.Now())
|
|
if err != nil {
|
|
err = werr.Wrap(err).WithData(timeToStr)
|
|
return
|
|
}
|
|
|
|
// Protect the user from switching from/to dates, leading to
|
|
// zero matching values from the database.
|
|
if timeFrom.After(timeTo) {
|
|
timeFrom, timeTo = timeTo, timeFrom
|
|
}
|
|
|
|
// Apply an optionally set offset (in seconds).
|
|
timeFrom = applyTimeOffset(timeFrom, time.Second, offset)
|
|
timeTo = applyTimeOffset(timeTo, time.Second, offset)
|
|
|
|
return
|
|
}
|