Socket
Socket
Sign inDemoInstall

chronometric

Package Overview
Dependencies
0
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    chronometric

JavaScript library for working with time durations in "1mo 1w 1d" format.


Version published
Weekly downloads
7
Maintainers
1
Install size
13.7 kB
Created
Weekly downloads
 

Readme

Source

chronometric

codecov GitHub Workflow Status (master) GitHub Workflow Status (develop) npm npm

JavaScript library for working with time durations in "1mo 1w 1d" format.

Install

$ npm install --save chronometric

CodeSandbox

You can find CodeSandbox template here

Basic usage

import { Chronometric } from 'chronometric';

const chronoA = new Chronometric(2200);
const chronoB = Chronometric.fromString('1w 1d');
const chronoC = new Chronometric({ d: 1, h: 1 });

Via Node.js require()

const { Chronometric } = require('chronometric');

const chronoA = new Chronometric(2200);
const chronoB = Chronometric.fromString('1w 1d');
const chronoC = new Chronometric({ d: 1, h: 1 });

Via UNPKG

<script src="https://unpkg.com/chronometric@latest"></script>
<script>
  const { Chronometric } = window.chronometric;

  const chronoA = new Chronometric(2200);
  const chronoB = Chronometric.fromString('1w 1d');
  const chronoC = new Chronometric({ d: 1, h: 1 });
</script>

Features

Custom global and instance unit configuration

import { Chronometric } from 'chronometric';

// global configuration
Chronometric.defaultConversionRatios = {
  ms: 1,
  d: 24 * 60 * 60 * 1000
};
console.log(Chronometric.fromString("1d") + 0); // will output 86400000

// instance configuration
const chronoB = new Chrono(
  2200,
  {
    ms: 1,
    s: 1000
  }
);
console.log(chronoB.toString()); // will output "2s 200ms"

Works with JavaScript Date objects

import { Chronometric } from 'chronometric';

const dateFrom = new Date();
const dateTo = new Date(0);

const chrono = new Chronometric(dateFrom - dateTo); // will contain timespan between dateFrom and dateTo
import { Chronometric } from 'chronometric';

const now = Date.now();
const tomorrow = new Date(now + Chronometric.fromString("1d"));
const inAWeek = new Date(now + Chronometric.fromString("1w"));

Worktime units

import {
  Chronometric,
  HOUR_TO_MS_CONVERSION_RATIO,
  MINUTE_TO_MS_CONVERSION_RATIO
} from 'chronometric';

Chronometric.defaultConversionRatios = {
	ms: 1,
  m: MINUTE_TO_MS_CONVERSION_RATIO,
  h: HOUR_TO_MS_CONVERSION_RATIO,
  d: 8 * HOUR_TO_MS_CONVERSION_RATIO, // 8 hour work day
  w: 5 * 8 * HOUR_TO_MS_CONVERSION_RATIO // 5 day work week
};

const spentTime = ["9h 30m", "12h 22m"];
const totalSpentTime = new Chronometric(
  spentTime
  	.reduce((acc, item) => acc + Chronometric.fromString(item), 0)
).toString(); // "2d 5h 52m"

Known issues

  • When using big and small conversion ratios simultaniously (i.e. 1 year and 1 nanosecond to milliseconds) small ones can be lost due to JavaScript number type precision (see Number.MAX_SAFE_INTEGER)

Keywords

FAQs

Last updated on 21 Aug 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc