Returns the human-readable format of the given number of milliseconds.
- Divide
ms
with the appropriate values to obtain the appropriate values forday
,hour
,minute
,second
andmillisecond
. - Use
Object.entries()
withArray.prototype.filter()
to keep only non-zero values. - Use
Array.prototype.map()
to create the string for each value, pluralizing appropriately. - Use
String.prototype.join(', ')
to combine the values into a string.
const formatDuration = ms => { if (ms < 0) ms = -ms; const time = { day: Math.floor(ms / 86400000), hour: Math.floor(ms / 3600000) % 24, minute: Math.floor(ms / 60000) % 60, second: Math.floor(ms / 1000) % 60, millisecond: Math.floor(ms) % 1000 }; return Object.entries(time) .filter(val => val[1] !== 0) .map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`) .join(', '); };
Examples
formatDuration(1001); // '1 second, 1 millisecond' formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'
Recommended snippets
isISOString
JavaScript, Date
Checks if the given string is valid in the simplified extended ISO format (ISO 8601).
toISOStringWithTimezone
JavaScript, Date
Converts a date to extended ISO format (ISO 8601), including timezone offset.
addMinutesToDate
JavaScript, Date
Calculates the date of
n
minutes from the given date, returning its string representation.