diff --git a/utils/reflect.go b/utils/reflect.go index 5af166639..d0d76c1e9 100644 --- a/utils/reflect.go +++ b/utils/reflect.go @@ -71,14 +71,14 @@ func StringToInterface(s string) interface{} { if f, err := strconv.ParseFloat(s, 64); err == nil { return f } - // time.Duration - if d, err := time.ParseDuration(s); err == nil { - return d - } // time.Time if t, err := ParseTimeDetectLayout(s, "Local"); err == nil { return t } + // time.Duration + if d, err := time.ParseDuration(s); err == nil { + return d + } // string return s } diff --git a/utils/reflect_test.go b/utils/reflect_test.go index f4beaf715..5c925e0c0 100644 --- a/utils/reflect_test.go +++ b/utils/reflect_test.go @@ -215,6 +215,12 @@ func TestStringToInterface(t *testing.T) { if res := StringToInterface("45s"); res != time.Duration(45*time.Second) { t.Error("not parsing time.Duration") } + res := StringToInterface("+24h") + resTime := res.(time.Time) + now := time.Now() + if resTime.Hour() != now.Hour() && resTime.Minute() != now.Minute() { + t.Error("not parsing time.Time") + } } func TestCastFieldIfToString(t *testing.T) {