chriscdn / duration

A class to represent an elapsed time, and provides getters to convert among different time units.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@chriscdn/duration

The Duration class represents an elapsed time, and provides methods and getters to convert among units.

Installation

Using npm:

npm install @chriscdn/duration

Using yarn:

yarn add @chriscdn/duration

Usage

Creating a Duration Instance

You can construct a Duration instance by providing unit parameters. Each parameter is optional and defaults to zero if not provided.

import { Duration } from "@chriscdn/duration";

const duration = new Duration({
  weeks: 0,
  days: 0,
  hours: 24,
  minutes: 0,
  seconds: 0,
  milliseconds: 0,
  microseconds: 0,
});

console.log(duration.days); // 1
console.log(duration.hours); // 24
console.log(duration.minutes); // 1440
console.log(duration.seconds); // 86400
console.log(duration.milliseconds); // 86400000
console.log(duration.microseconds); // 86400000000

Factory Function

A factory function is available to make the syntax a little more compact:

import { Duration } from "@chriscdn/duration";

const duration = Duration.with({ hours: 12 });

console.log(duration.days); // 0.5

Static Methods

Static methods are also available for conversion:

import { Duration } from "@chriscdn/duration";

const hours = Duration.toHours({ hours: 1, minutes: 120 }); // 3
const milliseconds = Duration.toMilliseconds({ hours: 1 }); // 3.6e+6

These methods are useful with functions like setInterval and setTimeout:

// Execute callback once per hour
setInterval(callback, Duration.toMilliseconds({ hours: 1 }));

Constructing from Dates

A Duration instance can be created from the difference between two dates:

const d1 = new Date("2024-01-01T00:00:00Z");
const d2 = new Date("2024-01-02T00:00:00Z");

const duration = Duration.difference(d1, d2);
console.log(duration.days === 1); // true

// This is functionally equivalent to:
const duration = Duration.with({
  milliseconds: d2.getTime() - d1.getTime(),
});

License

MIT

About

A class to represent an elapsed time, and provides getters to convert among different time units.

License:MIT License


Languages

Language:TypeScript 60.3%Language:JavaScript 39.7%