diff --git a/graylog2-web-interface/src/util/DateTime.test.ts b/graylog2-web-interface/src/util/DateTime.test.ts index efcbdf8b53d0..d406be800037 100644 --- a/graylog2-web-interface/src/util/DateTime.test.ts +++ b/graylog2-web-interface/src/util/DateTime.test.ts @@ -19,14 +19,15 @@ import moment from 'moment-timezone'; import { - relativeDifference, - formatAsBrowserTime, - adjustFormat, - toUTCFromTz, DATE_TIME_FORMATS, + adjustFormat, + formatAsBrowserTime, getBrowserTimezone, parseFromIsoString, + relativeDifference, + relativeDifferenceDays, toDateObject, + toUTCFromTz, } from 'util/DateTime'; const mockRootTimeZone = 'America/Chicago'; @@ -170,6 +171,12 @@ describe('DateTime utils', () => { }); }); + describe('relativeDifferenceDays', () => { + it('should return relative difference for time in days', () => { + expect(relativeDifferenceDays('2019-01-01T10:00:00.000Z')).toBe(364); + }); + }); + describe('toUTCFromTz', () => { it('should transform time to UTC based on defined tz', () => { expect(toUTCFromTz('2020-01-01T10:00:00.000', moscowTZ).toISOString()).toEqual('2020-01-01T07:00:00.000Z'); diff --git a/graylog2-web-interface/src/util/DateTime.ts b/graylog2-web-interface/src/util/DateTime.ts index 22ec90cd84f2..a7ec5926435c 100644 --- a/graylog2-web-interface/src/util/DateTime.ts +++ b/graylog2-web-interface/src/util/DateTime.ts @@ -104,6 +104,16 @@ export const relativeDifference = (dateTime: DateTime) => { return validateDateTime(dateObject, dateTime).fromNow(); }; +/** + * Returns the time, relative to the provided date time, in days. + */ +export const relativeDifferenceDays = (dateTime: DateTime) => { + const eventDateObject = toDateObject(dateTime); + const todayDateObject = toDateObject(new Date()); + + return todayDateObject.diff(eventDateObject, 'days'); +}; + /** * Validate if the provided time has a supported format. */