Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

chronometric

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chronometric

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

  • 1.0.4-beta.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
decreased by-40%
Maintainers
1
Weekly downloads
 
Created
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

Package last updated on 21 Aug 2020

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc