UNPKG

@lonu/stc

Version:

A tool for converting OpenApi/Swagger/Apifox into code.

46 lines (45 loc) 1.44 kB
/** * Convert time duration to a human readable string: 5d1h20m30s * * - milliseconds The number to format, unit milliseconds */ export function prettyTime(milliseconds, options = { withSpaces: false, toFixedVal: 1, longFormat: false, }) { let second = milliseconds / 1000; if (second < 60) { return unitToString(second, 0, options); } let minute = Math.floor(second / 60); second %= 60; if (minute < 60) { return unitToString(minute, 1, options) + unitToString(second, 0, options); } let hour = Math.floor(minute / 60); minute %= 60; if (hour < 24) { return (unitToString(hour, 2, options) + unitToString(minute, 1, options) + unitToString(second, 0, options)); } const day = Math.floor(hour / 24); hour %= 24; return (unitToString(day, 3, options) + unitToString(hour, 2, options) + unitToString(minute, 1, options) + unitToString(second, 0, options)); } function unitToString(val, i, { withSpaces = false, toFixedVal = 1, longFormat = false }) { const units = longFormat ? ["second", "minute", "hour", "day"] : ["s", "m", "h", "d"]; const unit = longFormat && (val >= 2 || (val > 1 && toFixedVal > 0)) ? units[i] + "s" : units[i]; if (i == 0) { return val.toFixed(toFixedVal) + unit; } return val + (withSpaces ? unit + " " : unit); }