summaryrefslogtreecommitdiffhomepage
path: root/frontend/src/utilities/time.ts
blob: 54f93289f175affb44ebebab4e5aa981f69db51b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
interface TimeFormat {
  unit: string;
  divisor: number;
}

export const divisorDay = 24 * 60 * 60;
export const divisorHour = 60 * 60;
export const divisorMinute = 60;
export const divisorSecond = 1;

export const formatTime = (
  timeInSeconds: number,
  formats: TimeFormat[],
): string =>
  formats.reduce(
    (formattedTime: string, { unit, divisor }: TimeFormat, index: number) => {
      const timeValue: number =
        index === 0
          ? Math.floor(timeInSeconds / divisor)
          : Math.floor(timeInSeconds / divisor) % 60;
      return (
        formattedTime +
        (index === 0
          ? `${timeValue}${unit} `
          : `${timeValue.toString().padStart(2, "0")}${index < formats.length - 1 ? ":" : ""}`)
      );
    },
    "",
  );