Immutable Duration class with arithmetic operations

Import

import { ... } from 'ts-time-utils/duration';

Examples

Create Durations

Create Duration objects from various sources

import { Duration } from 'ts-time-utils/duration';

// Create from units
const d1 = Duration.fromHours(2.5);
console.log(d1.toString()); // "2h 30m"

const d2 = Duration.fromMinutes(90);
console.log(d2.toString()); // "1h 30m"

// Create from object
const d3 = new Duration({ hours: 1, minutes: 30, seconds: 45 });
console.log(d3.toString()); // "1h 30m 45s"

// Parse from string
const d4 = Duration.fromString('2h 15m 30s');
console.log(d4.milliseconds); // 8130000

// From date range
const start = new Date('2025-09-14T09:00');
const end = new Date('2025-09-14T17:30');
const d5 = Duration.between(start, end);
console.log(d5.toString()); // "8h 30m"

Duration Arithmetic

Add, subtract, multiply, and divide durations

import { Duration, sumDurations, maxDuration } from 'ts-time-utils/duration';

const d1 = Duration.fromHours(2);
const d2 = Duration.fromMinutes(30);

// Arithmetic (immutable - returns new Duration)
const sum = d1.add(d2);
console.log(sum.toString()); // "2h 30m"

const diff = d1.subtract(d2);
console.log(diff.toString()); // "1h 30m"

const doubled = d1.multiply(2);
console.log(doubled.toString()); // "4h"

const half = d1.divide(2);
console.log(half.toString()); // "1h"

// Comparisons
console.log(d1.greaterThan(d2)); // true
console.log(d1.equals(Duration.fromMinutes(120))); // true

// Array utilities
const durations = [d1, d2, Duration.fromHours(1)];
console.log(sumDurations(...durations).toString()); // "3h 30m"
console.log(maxDuration(...durations).toString()); // "2h"