1.0.1 • Published 6 years ago

humanize-duration-es6 v1.0.1

Weekly downloads
678
License
Unlicense
Repository
github
Last release
6 years ago

Humanize Duration

npm version build status

ES6 version of the humanize-duration library with some modifications.

Converts the time in milliseconds to something like "30 minutes" or "3 days, 1 hour".

Basic usage

This package is available as humanize-duration-es6 on npm.

import Humanizer from 'humanize-duration-es6';
import localeEn from 'humanize-duration-es6/src/locale/en'

const h = new Humanizer(localeEn);
h.humanize(12000);

Usage

By default, library will humanize down to the second, and will return a decimal for the smallest unit.

h.humanize(3000)      // '3 seconds'
h.humanize(2250)      // '2.25 seconds'
h.humanize(97320000)  // '1 day, 3 hours, 2 minutes'

Options

You can change the settings by passing options as the second argument:

delimiter

String to display between the previous unit and the next value.

h.humanize(22140000, { delimiter: ' and ' })  // '6 hours and 9 minutes'
h.humanize(22140000, { delimiter: '--' })     // '6 hours--9 minutes'

spacer

String to display between each value and unit.

h.humanize(260040000, { spacer: ' whole ' })  // '3 whole days, 14 whole minutes'
h.humanize(260040000, { spacer: '' })         // '3days, 14minutes'

largest

Number representing the maximum number of units to display for the duration.

h.humanize(1000000000000)                  // '31 years, 8 months, 1 week, 19 hours, 46 minutes, 40 seconds'
h.humanize(1000000000000, { largest: 2 })  // '31 years, 8 month'

units

Array of strings to define which units are used to display the duration (if needed). Can be one, or a combination of any, of the following: ['y', 'mo', 'w', 'd', 'h', 'm', 's', 'ms']

h.humanize(3600000, { units: ['h'] })       // '1 hour'
h.humanize(3600000, { units: ['m'] })       // '60 minutes'
h.humanize(3600000, { units: ['d', 'h'] })  // '1 hour'

round

Boolean value. Use true to round the smallest unit displayed (can be combined with largest and units).

h.humanize(1200)                   // '1.2 seconds'
h.humanize(1200, { round: true })  // '1 second'
h.humanize(1600, { round: true })  // '2 seconds'

decimal

String to substitute for the decimal point in a decimal fraction.

h.humanize(1200)                          // '1.2 seconds'
h.humanize(1200, { decimal: ' point ' })  // '1 point 2 seconds'

conjunction

String to include before the final unit. You can also set serialComma to false to eliminate the final comma.

h.humanize(22140000, { conjunction: ' and ' })                      // '6 hours and 9 minutes'
h.humanize(22141000, { conjunction: ' and ' })                      // '6 hours, 9 minutes, and 1 second'
h.humanize(22140000, { conjunction: ' and ', serialComma: false })  // '6 hours and 9 minutes'
h.humanize(22141000, { conjunction: ' and ', serialComma: false })  // '6 hours, 9 minutes and 1 second'

unitMeasures

Customize the value used to calculate each unit of time.

h.humanize(400)    // '0.4 seconds'
h.humanize(400, {  // '1 year, 1 month, 5 days'
  unitMeasures: {
    y: 365,
    mo: 30,
    w: 7,
    d: 1
  }
})

Combined example

h.humanize(3602000, {
  round: true,
  spacer: ' great ',
  units: ['m']
})
// '60 great minutes'

Languages

You can also add new languages. For example:

import Humanizer from 'humanize-duration-es6';

const shortEnLocale = {
  y: () => "y",
  mo: () => "mo",
  w: () => "w",
  d: () => "d",
  h: () => "h",
  m: () => "m",
  s: () => "s",
  ms: () => "ms",
  decimal: () => "."
};
const shortEnglishHumanizer = new Humanizer(shortEnLocale, {
  spacer: "",
  delimiter: " "
});

shortEnglishHumanizer.humanize(15600000)  // '4 h, 20 m'

Supported languages

Humanize Duration supports the following languages:

LanguageCode
Arabicar
Catalanca
Chinese, simplifiedzh_CN
Chinese, traditionalzh_TW
Czechcs
Danishda
Dutchnl
Englishen
Finnishfi
Frenchfr
Germande
Greekgr
Hungarianhu
Icelandicis
Indonesianid
Italianit
Japaneseja
Koreanko
Lithuanianlt
Malayms
Norwegianno
Polishpl
Portuguesept
Russianru
Spanishes
Swedishsv
Turkishtr
Ukrainianuk
Vietnamesevi

Credits

Based on library humanize-duration

Licensed under the permissive Unlicense.