this repo has no description
at main 51 lines 1.5 kB view raw
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}