diff --git a/backend/gtime/time_range.go b/backend/gtime/time_range.go index e42aedaa7..ac9441746 100644 --- a/backend/gtime/time_range.go +++ b/backend/gtime/time_range.go @@ -163,8 +163,8 @@ func (t parsableTime) parse() (time.Time, error) { } // Duration relative to current time. - if diff, err := time.ParseDuration("-" + t.time); err == nil { - return t.now.Add(diff), nil + if diff, err := ParseDuration(t.time); err == nil { + return t.now.Add(-diff), nil } // Advanced time string, mimics the frontend's datemath library. diff --git a/backend/gtime/time_range_test.go b/backend/gtime/time_range_test.go index d4b27a038..58cd52e58 100644 --- a/backend/gtime/time_range_test.go +++ b/backend/gtime/time_range_test.go @@ -63,6 +63,21 @@ func TestTimeRange(t *testing.T) { }) }) + t.Run("Can parse from 7d", func(t *testing.T) { + tr := TimeRange{ + From: "7d", + Now: now, + } + + t.Run("7d", func(t *testing.T) { + expected := now.Add(-7 * 24 * time.Hour) + + res, err := tr.ParseFrom() + require.Nil(t, err) + require.Equal(t, expected.Unix(), res.Unix()) + }) + }) + now, err := time.Parse(time.RFC3339Nano, "2020-03-26T15:12:56.000Z") require.Nil(t, err) t.Run("Can parse now-1M/M, now-1M/M", func(t *testing.T) {