@divante-adventure/duration
v0.1.2
Published
Duration parsing library
Readme
Usage
Samples
let Duration = require('duration');
new Duration('15h').timestamp(); // 15 * 60 * 60 = 54000 seconds
new Duration('15h').hours(); // 15
new Duration('15h').minutes(); // 0
new Duration('15h').seconds(); // 0
new Duration('7.5h').timestamp(); // 7.5 * 60 * 60 = 27000 seconds
new Duration('7.5h').hours(); // 7
new Duration('7.5h').minutes(); // 30
new Duration('7.5h').seconds(); // 0
new Duration('3 h 20m 5s').timestamp(); // 12005 seconds
new Duration('3 h 20m 5s').hours(); // 3
new Duration('3 h 20m 5s').minutes(); // 20
new Duration('3 h 20m 5s').seconds(); // 5Validating
new Duration('3h').isValid(); // true
new Duration('h3').isValid(); // falseWhite characters are ignored
let a = new Duration('3h 20.5m 5s');
let b = new Duration('3 h 20.5 m 5 s');
let c = new Duration('3h20.5m5s');
let d = new Duration('3 h 2 0 . 5 m 5 s');
a.timestamp() === b.timestamp() === c.timestamp() === d.timestamp(); //trueAccepting timestamps
new Duration(0); // 0 seconds
new Duration(60); // 1 minute
new Duration(-5).isValid(); // falseFormatting
new Duration(0).format('{H}h {MM}m {SS}s'); // "0h 00m 00s"
new Duration(60).format('{M} minute(s)'); // "1 minute(s)"Accepted values in formats:
{H} / {HH}- hours (second value with padding to 2 digits){M} / {MM}- minutes{S} / {SS}- seconds
You can also pass object as a format to use conditional formatting. If you won't pass anything, following default object will be used:
let defaultConditionalFormat = {
zero: '',
h: '{H}h',
m: '{M}m',
s: '{S}s',
hm: '{H}h {MM}m',
hs: '{H}h {M}m {SS}s',
ms: '{M}m {SS}s',
hms: '{H}h {MM}m {SS}s'
};Where for example hm format will be used when hours and minutes > 0 and seconds are equal to zero.
If you pass an object, undefined formats will be replaced with default ones.
