UNPKG

@onesy/date

Version:

Time and date utils library

53 lines (52 loc) 2.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const is_1 = __importDefault(require("@onesy/utils/is")); const clamp_1 = __importDefault(require("@onesy/utils/clamp")); function duration(value, unitAbbr = false, raw = false, separator = ' ', display = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'], options) { const l = (options === null || options === void 0 ? void 0 : options.l) || (value => value); if ((0, is_1.default)('number', value)) { let result = ''; let milliseconds = value; const values = []; const valuesRaw = {}; const millisecondsInTime = { millisecond: 1, second: 1e3, minute: 60 * 1e3, hour: 60 * 60 * 1e3, day: 24 * 60 * 60 * 1e3, month: 30 * 24 * 60 * 60 * 1e3, year: 12 * 30 * 24 * 60 * 60 * 1e3 }; const unitsAbbr = { millisecond: 'ms', second: 's', minute: 'm', hour: 'h', day: 'd', month: 'mo', year: 'y' }; for (const unit of display) { if (millisecondsInTime[unit]) { const value_ = (0, clamp_1.default)(Math.floor(milliseconds / millisecondsInTime[unit]), 0); if (value_ > 0) { milliseconds -= value_ * millisecondsInTime[unit]; valuesRaw[unit] = value_; let valueTime = value_; if (unitAbbr) valueTime = `${valueTime} ${l(unitsAbbr[unit])}`; else valueTime = `${valueTime} ${l(`${unit}${value_ > 1 ? 's' : ''}`)}`; values.push(valueTime); } } } values.forEach((value_) => result += `${separator}${value_}`); return (raw ? valuesRaw : result.trim()); } } exports.default = duration;