Skip to main content
Deno 2 is finally here 🎉️
Learn more

minitz

Converting between different timezones in pure JavaScript is tricky. This minimal library tries to solve that problem in the simplest possible way.

Minitz can convert regular Date objects to/from any timezone supported by the system (Node/Deno/Browser). Compatible with both ESM or UMD/CommnJS.

Node.js CI Deno CI npm version NPM Downloads jsdelivr Codacy Badge MIT License

  • Convert Dates between to/from any timezone.
  • MIT licensed, use the library any way you want. For real.
  • Minimal, no dependencies. Relies on JavaScript Intl and current best practises.
  • Works in Node.js >=14.0 (both require and import).
  • Works in Deno >=1.8.
  • Works in browsers as standalone, UMD or ES-module.
  • Includes TypeScript typings.

Documentation

Full documentation available at hexagon.github.io/minitz.

Installation

Node.js

npm install minitz --save

JavaScript

// ESM Import ...
import minitz from "minitz";

// ... or CommonJS Require
const minitz = require("minitz");

TypeScript

Note that only default export is available in Node.js TypeScript, as the commonjs module is used internally.

import minitz from "minitz";

// ...

Deno

JavaScript

import minitz from "https://cdn.jsdelivr.net/gh/hexagon/minitz/src/minitz.js";

// ...

TypeScript

import { minitz } from "https://cdn.jsdelivr.net/gh/hexagon/minitz/src/minitz.js";

// ...

Browser

Manual

  • Download latest zipball
  • Unpack
  • Grab minitz.min.js (UMD and standalone) or minitz.min.mjs (ES-module) from the dist/ folder

CDN

To use as a UMD-module (stand alone, RequireJS etc.)

<script src="https://cdn.jsdelivr.net/npm/minitz/dist/minitz.min.js"></script>

To use as a ES-module

<script type="module">
    import minitz from "https://cdn.jsdelivr.net/npm/minitz/dist/minitz.min.mjs";

    // ... see usage section ...
</script>

Examples

Assuming you have imported minitz as described under ‘Installation’.

Convert local time to a specific timezone

const 
    // Step 1: Create a date object with current local time
    localTime = new Date(),

    // Step 2: Convert to local time in America/New_York
    timeInNewYork = minitz.toTZ(localTime, "America/New_York");

console.log("Local time: ", localTime.toLocaleString("sv-SE"));
// -> Local time:  2022-09-09 21:23:30

console.log("Time in New York: ", timeInNewYork.toLocaleString("sv-SE"));
// -> Time in New York:  2022-09-09 15:23:30

Convert from a specific timezone to local time

const 
    // Step 1: Create a date object with local time in target timezone
    timeInNewYork = new Date(Date.parse("2022-09-10 23:08:09")),

    // Step 2: Convert to "real" local time using minitz.fromTZ
    localTime = minitz.fromTZ(timeInNewYork, "America/New_York");

console.log("Time in New York: ", timeInNewYork.toLocaleString("sv-SE"));
// Time in New York:  2022-09-10 23:08:09

console.log("Local time: ", localTime.toLocaleString("sv-SE"));
// Local time (Europe/Stockholm):  2022-09-11 05:08:09

Contributing

Any contributions are welcome. See Contribution Guide

License

MIT