this repo has no description
1// Breaks duration down from milliseconds into hours/minutes/seconds
2export function getDurationParts(durationInMilliseconds: number): {
3 hours: number;
4 minutes: number;
5 seconds: number;
6} {
7 // convert ms to seconds
8 const durationInSeconds = Math.floor(durationInMilliseconds / 1000);
9 const duration = Math.round(durationInSeconds);
10
11 return {
12 hours: Math.floor(duration / 3600),
13 minutes: Math.floor(duration / 60) % 60,
14 seconds: duration % 60,
15 };
16}
17
18// returns normal numeric date in YYYY-MM-DD from a date string
19// AKA getNumericDateFromReleaseDate but renamed to be more generic
20//
21// ex: getNumericDateFromDateString('2024-04-15T08:41:03Z') => '2024-04-15'
22// getNumericDateFromDateString('15 April 2024 14:48 UTC') => '2024-04-15'
23export function getNumericDateFromDateString(
24 timestamp?: string,
25): string | undefined {
26 if (!timestamp) {
27 return undefined;
28 }
29
30 return new Date(timestamp).toISOString().split('T')?.[0];
31}
32
33// Utility to format ISO8601 Duration Strings from raw milliseconds (ex: PT2M42S).
34export function formatISODuration(durationInMilliseconds: number): string {
35 const { hours, minutes, seconds } = getDurationParts(
36 durationInMilliseconds,
37 );
38
39 if (!hours && !minutes && !seconds) {
40 return 'P0D';
41 }
42
43 return [
44 'PT',
45 hours && `${hours}H`,
46 minutes && `${minutes}M`,
47 seconds && `${seconds}S`,
48 ]
49 .filter(Boolean)
50 .join('');
51}