Skip to content

Commit db8b419

Browse files
authored
Combine time constants (#1371)
1 parent 475d7cc commit db8b419

File tree

1 file changed

+28
-30
lines changed
  • extensions/ql-vscode/src/pure

1 file changed

+28
-30
lines changed

extensions/ql-vscode/src/pure/time.ts

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,20 @@
22
* Contains an assortment of helper constants and functions for working with time, dates, and durations.
33
*/
44

5-
export const ONE_DAY_IN_MS = 24 * 60 * 60 * 1000;
6-
export const ONE_HOUR_IN_MS = 1000 * 60 * 60;
7-
export const TWO_HOURS_IN_MS = 1000 * 60 * 60 * 2;
8-
export const THREE_HOURS_IN_MS = 1000 * 60 * 60 * 3;
5+
export const ONE_MINUTE_IN_MS = 1000 * 60;
6+
export const ONE_HOUR_IN_MS = ONE_MINUTE_IN_MS * 60;
7+
export const TWO_HOURS_IN_MS = ONE_HOUR_IN_MS * 2;
8+
export const THREE_HOURS_IN_MS = ONE_HOUR_IN_MS * 3;
9+
export const ONE_DAY_IN_MS = ONE_HOUR_IN_MS * 24;
10+
11+
// These are approximations
12+
export const ONE_MONTH_IN_MS = ONE_DAY_IN_MS * 30;
13+
export const ONE_YEAR_IN_MS = ONE_DAY_IN_MS * 365;
914

1015
const durationFormatter = new Intl.RelativeTimeFormat('en', {
1116
numeric: 'auto',
1217
});
1318

14-
// Months and years are approximate
15-
const MINUTE_IN_MILLIS = 1000 * 60;
16-
const HOUR_IN_MILLIS = 60 * MINUTE_IN_MILLIS;
17-
const DAY_IN_MILLIS = 24 * HOUR_IN_MILLIS;
18-
const MONTH_IN_MILLIS = 30 * DAY_IN_MILLIS;
19-
const YEAR_IN_MILLIS = 365 * DAY_IN_MILLIS;
20-
2119
/**
2220
* Converts a number of milliseconds into a human-readable string with units, indicating a relative time in the past or future.
2321
*
@@ -30,16 +28,16 @@ export function humanizeRelativeTime(relativeTimeMillis?: number) {
3028
return '';
3129
}
3230

33-
if (Math.abs(relativeTimeMillis) < HOUR_IN_MILLIS) {
34-
return durationFormatter.format(Math.floor(relativeTimeMillis / MINUTE_IN_MILLIS), 'minute');
35-
} else if (Math.abs(relativeTimeMillis) < DAY_IN_MILLIS) {
36-
return durationFormatter.format(Math.floor(relativeTimeMillis / HOUR_IN_MILLIS), 'hour');
37-
} else if (Math.abs(relativeTimeMillis) < MONTH_IN_MILLIS) {
38-
return durationFormatter.format(Math.floor(relativeTimeMillis / DAY_IN_MILLIS), 'day');
39-
} else if (Math.abs(relativeTimeMillis) < YEAR_IN_MILLIS) {
40-
return durationFormatter.format(Math.floor(relativeTimeMillis / MONTH_IN_MILLIS), 'month');
31+
if (Math.abs(relativeTimeMillis) < ONE_HOUR_IN_MS) {
32+
return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_MINUTE_IN_MS), 'minute');
33+
} else if (Math.abs(relativeTimeMillis) < ONE_DAY_IN_MS) {
34+
return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_HOUR_IN_MS), 'hour');
35+
} else if (Math.abs(relativeTimeMillis) < ONE_MONTH_IN_MS) {
36+
return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_DAY_IN_MS), 'day');
37+
} else if (Math.abs(relativeTimeMillis) < ONE_YEAR_IN_MS) {
38+
return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_MONTH_IN_MS), 'month');
4139
} else {
42-
return durationFormatter.format(Math.floor(relativeTimeMillis / YEAR_IN_MILLIS), 'year');
40+
return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_YEAR_IN_MS), 'year');
4341
}
4442
}
4543

@@ -53,26 +51,26 @@ export function humanizeRelativeTime(relativeTimeMillis?: number) {
5351
export function humanizeUnit(millis?: number): string {
5452
// assume a blank or empty string is a zero
5553
// assume anything less than 0 is a zero
56-
if (!millis || millis < MINUTE_IN_MILLIS) {
54+
if (!millis || millis < ONE_MINUTE_IN_MS) {
5755
return 'Less than a minute';
5856
}
5957
let unit: string;
6058
let unitDiff: number;
61-
if (millis < HOUR_IN_MILLIS) {
59+
if (millis < ONE_HOUR_IN_MS) {
6260
unit = 'minute';
63-
unitDiff = Math.floor(millis / MINUTE_IN_MILLIS);
64-
} else if (millis < DAY_IN_MILLIS) {
61+
unitDiff = Math.floor(millis / ONE_MINUTE_IN_MS);
62+
} else if (millis < ONE_DAY_IN_MS) {
6563
unit = 'hour';
66-
unitDiff = Math.floor(millis / HOUR_IN_MILLIS);
67-
} else if (millis < MONTH_IN_MILLIS) {
64+
unitDiff = Math.floor(millis / ONE_HOUR_IN_MS);
65+
} else if (millis < ONE_MONTH_IN_MS) {
6866
unit = 'day';
69-
unitDiff = Math.floor(millis / DAY_IN_MILLIS);
70-
} else if (millis < YEAR_IN_MILLIS) {
67+
unitDiff = Math.floor(millis / ONE_DAY_IN_MS);
68+
} else if (millis < ONE_YEAR_IN_MS) {
7169
unit = 'month';
72-
unitDiff = Math.floor(millis / MONTH_IN_MILLIS);
70+
unitDiff = Math.floor(millis / ONE_MONTH_IN_MS);
7371
} else {
7472
unit = 'year';
75-
unitDiff = Math.floor(millis / YEAR_IN_MILLIS);
73+
unitDiff = Math.floor(millis / ONE_YEAR_IN_MS);
7674
}
7775

7876
return createFormatter(unit).format(unitDiff);

0 commit comments

Comments
 (0)