Skip to main content

Returns the human readable format of the given number of milliseconds.

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(", ");
};

//
// Compiled (ES-2015 Loose)
var formatDuration = function formatDuration(ms) {
    if (ms < 0) ms = -ms;
    var 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(function(val) {
            return val[1] !== 0;
        })
        .map(function(_ref) {
            var key = _ref[0],
                val = _ref[1];
            return val + " " + key + (val !== 1 ? "s" : "");
        })
        .join(", ");
};

// --------------------------------------------------
// Example Usage
// --------------------------------------------------

formatDuration(1001); // '1 second, 1 millisecond'
formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'