@cdellacqua/interval

An Interval class for JavaScript

Usage no npm install needed!

<script type="module">
  import cdellacquaInterval from 'https://cdn.skypack.dev/@cdellacqua/interval';
</script>

README

Interval

An Interval class for JavaScript

NPM Package

npm install @cdellacqua/interval

Full documentation:

Highlights

Always serializes to S, M:SS, H:MM:SS, DdHH:MM:SS based on what is needed to fully represent the interval. If the interval is negative, '-' is prepended to the string representation

console.log(new Interval().toString());
// -> 0
console.log(Interval.fromString('12:59:48').toString());
// -> 12:59:48
console.log(Interval.fromString('-2:59:48').toString());
// -> -2:59:48

Convenience methods for Date <-> Interval interoperability

console.log(Interval.fromDates(new Date(2020, 0, 1, 12, 1, 59), new Date(2020, 1, 1, 12, 1, 59)).toString());
// -> 31d00:00:00
console.log(new Interval(-1, 0, 12, 1, 59).toDate(2020, 0, 1, 8).toString()); // negative Interval => subtracts to given date
// -> Tue Dec 31 2019 19:58:01 ...
console.log(new Interval(1, 0, 12, 1, 59).toDate(new Date(2020, 0, 1, 3)).toString()); // positive Interval => set to given date
// -> Wed Jan 01 2020 15:01:59 ...