chronometric
JavaScript library for working with time durations in "1mo 1w 1d" format.
Install
$ npm install --save chronometric
CodeSandbox
You can find CodeSandbox template here
Basic usage
Recommended
import { Chronometric } from 'chronometric';
const chronoA = new Chronometric(2200);
const chronoB = Chronometric.fromString('1w 1d');
const chronoC = new Chronometric({ d: 1, h: 1 });
const { Chronometric } = require('chronometric');
const chronoA = new Chronometric(2200);
const chronoB = Chronometric.fromString('1w 1d');
const chronoC = new Chronometric({ d: 1, h: 1 });
<script src="https://unpkg.com/chronometric@latest"></script>
<script>
const { Chronometric } = window.chronometric;
const chronoA = new Chronometric(2200);
const chronoB = Chronometric.fromString('1w 1d');
const chronoC = new Chronometric({ d: 1, h: 1 });
</script>
Features
Custom global and instance unit configuration
import { Chronometric } from 'chronometric';
Chronometric.defaultConversionRatios = {
ms: 1,
d: 24 * 60 * 60 * 1000
};
console.log(Chronometric.fromString("1d") + 0);
const chronoB = new Chrono(
2200,
{
ms: 1,
s: 1000
}
);
console.log(chronoB.toString());
Works with JavaScript Date objects
import { Chronometric } from 'chronometric';
const dateFrom = new Date();
const dateTo = new Date(0);
const chrono = new Chronometric(dateFrom - dateTo);
import { Chronometric } from 'chronometric';
const now = Date.now();
const tomorrow = new Date(now + Chronometric.fromString("1d"));
const inAWeek = new Date(now + Chronometric.fromString("1w"));
Worktime units
import {
Chronometric,
HOUR_TO_MS_CONVERSION_RATIO,
MINUTE_TO_MS_CONVERSION_RATIO
} from 'chronometric';
Chronometric.defaultConversionRatios = {
ms: 1,
m: MINUTE_TO_MS_CONVERSION_RATIO,
h: HOUR_TO_MS_CONVERSION_RATIO,
d: 8 * HOUR_TO_MS_CONVERSION_RATIO,
w: 5 * 8 * HOUR_TO_MS_CONVERSION_RATIO
};
const spentTime = ["9h 30m", "12h 22m"];
const totalSpentTime = new Chronometric(
spentTime
.reduce((acc, item) => acc + Chronometric.fromString(item), 0)
).toString();
Known issues
- When using big and small conversion ratios simultaniously (i.e. 1 year and 1 nanosecond to milliseconds) small ones can be lost due to JavaScript number type precision (see Number.MAX_SAFE_INTEGER)