package promutils import ( "math" "testing" "time" ) func TestParseTimeSuccess(t *testing.T) { f := func(s string, resultExpected float64) { t.Helper() result, err := ParseTime(s) if err != nil { t.Fatalf("unexpected error: %s", err) } if math.Abs(result-resultExpected) > 10 { t.Fatalf("unexpected result; got %v; want %v", result, resultExpected) } } now := float64(time.Now().UnixNano()) / 1e9 // duration relative to the current time f("1h5s", now-3605) // negative duration relative to the current time f("-5m", now-5*60) // Year f("2023", 1.6725312e+09) // Year and month f("2023-05", 1.6828992e+09) // Year, month and day f("2023-05-20", 1.6845408e+09) // Year, month, day and hour f("2023-05-20T04", 1.6845552e+09) // Year, month, day, hour and minute f("2023-05-20T04:57", 1.68455862e+09) // Year, month, day, hour, minute and second f("2023-05-20T04:57:43", 1.684558663e+09) // RFC3339 f("2023-05-20T04:57:43Z", 1.684558663e+09) f("2023-05-20T04:57:43+02:30", 1.684549663e+09) f("2023-05-20T04:57:43-02:30", 1.684567663e+09) f("2023-05-20T04:57:43.123Z", 1.6845586631230001e+09) f("2023-05-20T04:57:43.123456789Z", 1.6845586631230001e+09) }