// This function is slow export function getDateString( date: Date, utc: boolean, millis: boolean, ): string { const year = utc ? date.getUTCFullYear() : date.getFullYear(); const month = ( (utc ? date.getMonth() : date.getMonth()) + 1 ).toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }); const day = (utc ? date.getUTCDate() : date.getDate()).toLocaleString( 'en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }, ); const hour = (utc ? date.getUTCHours() : date.getHours()).toLocaleString( 'en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }, ); const minute = ( utc ? date.getUTCMinutes() : date.getMinutes() ).toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }); const second = ( utc ? date.getUTCSeconds() : date.getSeconds() ).toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }); const milliseconds = ( utc ? date.getUTCMilliseconds() : date.getMilliseconds() ).toLocaleString('en-US', { minimumIntegerDigits: 3, useGrouping: false, maximumFractionDigits: 0, }); return `${year}/${month}/${day} ${hour}:${minute}:${second}${millis ? `.${milliseconds}` : ''}${utc ? 'Z' : ''}`; } export function getDurationString(duration_millis: number): string { const millis = duration_millis % 1000; const duration_secs = Math.floor(duration_millis / 1000); const seconds = duration_secs % 60; const duration_minutes = Math.floor(duration_secs / 60); const minutes = duration_minutes % 60; const duration_hours = Math.floor(duration_minutes / 60); const millis_str = millis.toLocaleString('en-US', { minimumIntegerDigits: 3, useGrouping: false, maximumFractionDigits: 0, }); const seconds_str = seconds.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }); const minutes_str = minutes.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false, maximumFractionDigits: 0, }); const hours_str = duration_hours.toLocaleString('en-US', { minimumIntegerDigits: 1, useGrouping: false, maximumFractionDigits: 0, }); return `${hours_str}:${minutes_str}:${seconds_str}.${millis_str}`; } export function parseDurationString(duration: string): number { const parts = duration.split(':'); const seconds_str = parts.length >= 1 ? parts[parts.length - 1] : '0'; const minutes_str = parts.length >= 2 ? parts[parts.length - 2] : '0'; const hours_str = parts.length >= 3 ? parts[parts.length - 3] : '0'; const seconds = Number.parseFloat(seconds_str); const minutes = Number.parseFloat(minutes_str); const hours = Number.parseFloat(hours_str); return Math.floor(((hours * 60 + minutes) * 60 + seconds) * 1000); }