52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package test
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/traggo/server/model"
|
|
)
|
|
|
|
// Time parses a time panics if not valid
|
|
func Time(value string) time.Time {
|
|
parse, firstErr := time.ParseInLocation(time.RFC3339, value, time.UTC)
|
|
if firstErr != nil {
|
|
var err error
|
|
parse, err = time.ParseInLocation(time.RFC3339Nano, value, time.UTC)
|
|
if err != nil {
|
|
panic(firstErr)
|
|
}
|
|
}
|
|
return parse
|
|
}
|
|
|
|
func timeWithCustomTZ(value string) time.Time {
|
|
parse, err := time.Parse(time.RFC3339, value)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
_, offset := parse.Zone()
|
|
return parse.In(time.FixedZone("unknown", offset))
|
|
}
|
|
|
|
// TimeP parses a time panics if not valid
|
|
func TimeP(value string) *time.Time {
|
|
t := Time(value)
|
|
return &t
|
|
}
|
|
|
|
// ModelTimeUTC parses a model.Time in utc time. panics if not valid
|
|
func ModelTimeUTC(value string) model.Time {
|
|
return model.Time(Time(value))
|
|
}
|
|
|
|
// ModelTime parses a model.Time panics if not valid
|
|
func ModelTime(value string) model.Time {
|
|
return model.Time(timeWithCustomTZ(value))
|
|
}
|
|
|
|
// ModelTimeP parses a model.Time panics if not valid
|
|
func ModelTimeP(value string) *model.Time {
|
|
modelTime := ModelTime(value)
|
|
return &modelTime
|
|
}
|