Giter Site home page Giter Site logo

tiny-human-time's Introduction

Tiny Human Time

A tiny module for human readable timespans.

Build Status

API

humanize(t1, t2 [, units])

What you get when you require('tiny-human-time').

t1 and t2 are instances of Date or integers whose value relative to one another is given in milliseconds. Their order doesn't matter.

If t2 is not given, t1 alone will be used as the timespan relative to 0.

Either argument can be an array of the form [seconds, nanoseconds], like that produced by process.hrtime().

An optional last argument, units has possible values short and long, defaulting to long. units can be given as the last argument even if t2 is not given.

Returns the converted value and the greatest matching unit without going over. For example, 23 hours will be followed by 1 day.

humanize.short(t1, t2)

A convenience method to use short units. The possible arguments for t1 and t2 are the same as humanize.

Supports:

  • nanoseconds
  • microseconds
  • milliseconds
  • seconds
  • minutes
  • hours
  • days
  • weeks
  • years

Usage

const humanize = require('tiny-human-time');

const now = new Date(2016, 3, 5);
const later = new Date(2016, 3, 6);

humanize(now, later);
// => 1 day
const humanize = require('tiny-human-time');

const start = process.hrtime()
// and then a miracle occurs
const elapsed = process.hrtime(start)

humanize(elapsed)
// => 23 microseconds
const humanize = require('tiny-human-time').short;

humanize(1)
// => 1ms

tiny-human-time's People

Contributors

danasilver avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tiny-human-time's Issues

publish es5-compatible version on npm

Hi, thanks for the package.

I am using it as a dependency on a code that gets compressed using uglify-js, and as it is it doesnt support es6 and the process fail because of the let keyword and because the use of string literals `:

Errors:

Parse error at dist/www/bundle.js:38333,6
  let milli = Math.abs(isNaN(+t2) ? t1 : t2 - t1);
      ^
SyntaxError: Unexpected token: name (milli)
    at JS_Parse_Error.Object.defineProperty.get (eval at <anonymous> (/Users/fabricio/20k/road/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:86:23)
    at /Users/fabricio/20k/road/node_modules/uglify-js/bin/uglifyjs:384:39
    at time_it (/Users/fabricio/20k/road/node_modules/uglify-js/bin/uglifyjs:620:15)
    at /Users/fabricio/20k/road/node_modules/uglify-js/bin/uglifyjs:345:9
    at tryToString (fs.js:449:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436:12)
Parse error at dist/www/bundle.js:38354,9
  return `${n + (mode === 'short' ? '' : ' ')}${unit}${mode === 'short' || n ===
         ^
SyntaxError: Unexpected character '`'
    at JS_Parse_Error.Object.defineProperty.get (eval at <anonymous> (/Users/fabricio/20k/road/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:86:23)
    at /Users/fabricio/20k/road/node_modules/uglify-js/bin/uglifyjs:384:39
    at time_it (/Users/fabricio/20k/road/node_modules/uglify-js/bin/uglifyjs:620:15)
    at /Users/fabricio/20k/road/node_modules/uglify-js/bin/uglifyjs:345:9
    at tryToString (fs.js:449:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436:12)

Maybe we can either just replace those two lines with var and regular strings, or add a npm script to run the lib through babel with es2020 preset before publishing to npm.

I can create a PR for either option if you want :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.