duriso

Parse and serialize ISO 8601 Durations

Usage no npm install needed!

<script type="module">
  import duriso from 'https://cdn.skypack.dev/duriso';
</script>

README

Duriso

A 1KB package for parsing and serializing ISO 8601 Duration strings.

This package is just for some quick, unimportant conversions. Never use random packages you find on NPM for mission critical time/date conversions.

Usage

UMD

<script src="https://unpkg.com/duriso/index.umd.js"></script>
<script>
  const { serialize, parse } = duriso;
</script>

CJS

const duriso = require("duriso/index.cjs.js");
const { serialize, parse } = duriso;

ESM

import { serialize, parse } from "duriso";

Examples

const fullDurationStr = "P3Y6M2W4DT12H30M5S";

const semiDurationStr = "PT12H30M5S";

const fullDurationObj = {
  years: "3",
  months: "6",
  weeks: "2",
  days: "4",
  hours: "12",
  minutes: "30",
  seconds: "5",
};

const semiDurationObj = {
  hours: "12",
  minutes: "30",
  seconds: "5",
};

const serializedSemi = serialize(semiDurationObj);
// PT12H30M5S

const serializedFull = serialize(fullDurationObj);
// P3Y6M2W4DT12H30M5S

const parsedSemi = parse(durationString);
// {
//    ms: 45005000,
//    duration: {
//      hours: 12
//      minutes: 30
//      seconds: 5
//    }
// }

const parsedFull = parse(durationString);
// {
//    ms: 110464205000,
//    duration: {
//      years: 3
//      months: 6
//      weeks: 2
//      days: 4
//      hours: 12
//      minutes: 30
//      seconds: 5
//    }
// }

Parse

parse(string): { ms: number, duration: { years?: string; months?: string; weeks?: string; days?: string; hours?: string; minutes?: string; seconds?: string; } }

Serialize

serialize({ years?: string; months?: string; weeks?: string; days?: string; hours?: string; minutes?: string; seconds?: string; }): string

Warning

The millisecond conversion for months and years is inaccurate because the conversion is assuming 30 days in a month.