@bitblit/ratchet-common
Version:
Common tools for general use
58 lines • 2.51 kB
JavaScript
import { DateTime } from 'luxon';
import { NumberRatchet } from './number-ratchet.js';
export class DurationRatchet {
static thinFormatMsDuration(ms, includeMS = false) {
const rem_ms = Math.floor(ms % 1000);
const seconds = Math.floor(ms / 1000) % 60;
const minutes = Math.floor(ms / (1000 * 60)) % 60;
const hours = Math.floor(ms / (1000 * 60 * 60)) % 24;
const days = Math.floor(ms / (1000 * 60 * 60 * 24));
const f = NumberRatchet.leadingZeros;
let rval = hours > 0 ? f(hours, 2) + 'h' : '';
rval += minutes > 0 ? f(minutes, 2) + 'm' : '';
rval += includeMS ? f(seconds, 2) + '.' + f(rem_ms, 3) + 's' : f(seconds, 2) + 's';
if (days > 0) {
rval = days + 'd' + rval;
}
return rval;
}
static formatMsDuration(ms, includeMS = false) {
const rem_ms = Math.floor(ms % 1000);
const seconds = Math.floor(ms / 1000) % 60;
const minutes = Math.floor(ms / (1000 * 60)) % 60;
const hours = Math.floor(ms / (1000 * 60 * 60)) % 24;
const days = Math.floor(ms / (1000 * 60 * 60 * 24));
const f = NumberRatchet.leadingZeros;
let rval = f(hours, 2) + 'h' + f(minutes, 2) + 'm';
rval += includeMS ? f(seconds, 2) + '.' + f(rem_ms, 3) + 's' : f(seconds, 2) + 's';
if (days > 0) {
rval = days + 'd' + rval;
}
return rval;
}
static colonFormatMsDuration(ms, includeMS = false) {
const rem_ms = ms % 1000;
const seconds = Math.floor(ms / 1000) % 60;
const minutes = Math.floor(ms / (1000 * 60)) % 60;
const hours = Math.floor(ms / (1000 * 60 * 60));
const f = NumberRatchet.leadingZeros;
let rval = f(hours, 2) + ':' + f(minutes, 2) + ':';
rval += includeMS ? f(seconds, 2) + '.' + f(rem_ms, 3) : f(seconds, 2);
return rval;
}
static daysBetween(d1, d2) {
const dur = DateTime.fromJSDate(d1).diff(DateTime.fromJSDate(d2));
return dur.days;
}
static createSteps(startEpochMS, endEpochMS, timezone, outputFormat, stepUnit) {
let curDate = DateTime.fromMillis(startEpochMS).setZone(timezone);
const endDate = DateTime.fromMillis(endEpochMS);
const rval = [];
while (curDate < endDate) {
rval.push(curDate.toFormat(outputFormat));
curDate = curDate.plus(stepUnit);
}
return rval;
}
}
//# sourceMappingURL=duration-ratchet.js.map