/duration-format-let

format duration to humanize way

Primary LanguageTypeScript

duration-format-let

format duration to humanize format

Basic Usage

import dfl from 'duration-format-let';

dfl(1000); // 1s
dfl(90000); // 1m30s
dfl(100000,{unit: 's', delimiter: ' '}); // 1d 3h 46m 40s

Options Usage

Options.delimiter

you can change the delimiter between different unit.

dfl(100000); // 1d3h46m40s
dfl(100000,{unit: 's', delimiter: ','}); // 1d,3h,46m,40s

Options.unit

you can change the input duration unit. default unit is millisecond.

dfl(1000); // 1s
dfl(1000, { unit: 'h' }); // 1mo1w4d5h30m

Options.disableUnits

you can disable some units in the output format.

dfl(9000 * 1000); // 2h30m
dfl(9000 * 1000, { disableUnits: ['m'] }); // 2h1800s
dfl(9000 * 1000, { disableUnits: ['m', 's', 'ms'] }); // 2h

Options.unitMeasures

by default 1 year = 365.25 days, 1 month = 1/12 year. you can change this behavior by passing Options.unitMeasures

dfl(1000*60*60*1000); // 1mo1w4d5h30m
dfl(1000*60*60*1000, {
  unitMeasures: {
    mo: 30*24*60*60*1000,
  },
});  // 1mo1w4d16h

Options.labelObj

you can change display unit label, by passing Options.labelObj

dfl(1000*60*60*1000); // 1mo1w4d5h30m
dfl(1000*60*60*1000, {
  labelObj: {
    mo: 'month',
    w: 'week',
    d: 'day',
    h: 'hour',
    m: 'minute'
  }
}); // 1month1week4day5hour30minute
dfl(1000*60*60*1000, {
  labelObj: {
    mo: num => `month${num > 1 ? 's' : ''}`,
    w: num => `week${num > 1 ? 's' : ''}`,
    d: num => `day${num > 1 ? 's' : ''}`,
    h: num => `hour${num > 1 ? 's' : ''}`,
    m: num => `minute${num > 1 ? 's' : ''}`
  }
}); // 1month1week4days5hours30minutes