# readable-timespan

> Human readable timespans

Latest version **2.1.0** (published 2019-11-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install readable-timespan
pnpm add readable-timespan
yarn add readable-timespan
bun add readable-timespan
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2019-11-20 |
| First published | 2014-11-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 17 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 11 |
| Author | Alejandro U. Alvarez |
| Maintainers | aurbano |
| Keywords | human, readable, timespan, timestamp, milliseconds, seconds, hours, day |

## Links

- npm: https://www.npmjs.com/package/readable-timespan
- Repository: https://github.com/aurbano/readable-timespan
- Issues: https://github.com/aurbano/readable-timespan/issues
- npm.io page: https://npm.io/package/readable-timespan

## Alternatives

- [@js-joda/timezone](https://npm.io/package/@js-joda/timezone.md) — 383.4K weekly downloads
- [chartjs-adapter-moment](https://npm.io/package/chartjs-adapter-moment.md) — 210.8K weekly downloads
- [strftime](https://npm.io/package/strftime.md) — 171.2K weekly downloads
- [vue-flatpickr-component](https://npm.io/package/vue-flatpickr-component.md) — 115.8K weekly downloads
- [timepicker](https://npm.io/package/timepicker.md) — 51.0K weekly downloads

## Recent versions

- 2.1.0 (latest) — 2019-11-20
- 2.0.1 — 2019-11-18
- 2.0.0 — 2019-11-18
- 1.2.0 — 2016-12-12
- 1.1.0 — 2016-07-31
- 1.0.1 — 2015-03-07
- 1.0.0 — 2014-11-18

## README

[readable-timespan](http://urbanoalvarez.es/node-timespan)
=================

[![Build Status](http://img.shields.io/travis/aurbano/node-timespan/master.svg?style=flat-square)](https://travis-ci.org/aurbano/node-timespan)
[![Coverage Status](https://coveralls.io/repos/github/aurbano/node-timespan/badge.svg?branch=master)](https://coveralls.io/github/aurbano/node-timespan?branch=master)
[![npm version](http://img.shields.io/npm/v/readable-timespan.svg?style=flat-square)](https://www.npmjs.org/package/readable-timespan)
[![license](http://img.shields.io/npm/l/readable-timespan.svg?style=flat-square)](https://www.npmjs.org/package/readable-timespan)
[![downloads](https://img.shields.io/npm/dm/readable-timespan.svg?style=flat-square)](https://www.npmjs.org/package/readable-timespan)

> npm package to get human readable timespans

Display timespans the way we understand them:

* 4 minutes
* 2 weeks
* 23 seconds
* 5m
* 8 months
* ...

## Install

```sh
$ npm install --save readable-timespan
```

## Usage

```js
import Timespan from 'readable-timespan';

const timespan = new Timespan();
console.log("Last seen " + timespan.parse(5 * 60 * 1000) + " ago");
// Last seen 5 minutes ago
```

The `parse()` method takes one argument: the time difference in milliseconds, and returns the closest unit rounded up.

## Configuration

There are several settings that can be changed, this allows even localization in your language.

### timespan.set(options)

There are several options you can set (see examples below):

* `[second, minute, hour, week, month, year]`: Different strings for unit names.
* `[space]`: Whether you want a space or not.
* `[pluralize]`: Whether it should return an 's' at the end when the number is > 1.

```js
import Timespan from 'readable-timespan';

const timespan. = new Timespan({
    lessThanFirst: 'now',
    millisecond: 'ms',
    second: 's',
    minute: 'm',
    hour: 'h',
    day: 'd',
    week: 'w',
    month: 'mo',
    year: 'y',
    space: false,
    pluralize: false
});

// You will now get 5s instead of 5 seconds, 4m instead of 4 minutes and so on.
```

### Disabling units

You can disable any of the units by passing `false` in its settings, for example to disable **milliseconds**:


```js
import Timespan from 'readable-timespan';

const timespan. = new Timespan({
    millisecond: false
});

// You will now get timespan.parse(50) => 'now' 
```


## Localization

You can set it to your language by overriding the names of the units.

For example in Spanish:
```js
import Timespan from 'readable-timespan';

const timespan. = new Timespan({
    millisecond: 'milisegundo',
    second: 'segundo',
    minute: 'minuto',
    hour: 'hora',
    day: 'dia',
    week: 'semana',
    month: 'mes',
    year: 'año'
});

// You will now get '5 segundos' instead of '5 seconds', '4 minutos' instead of '4 minutes' and so on.
```

------ 

## License

MIT © [Alejandro U. Alvarez](http://urbanoalvarez.es)

[![Analytics](https://ga-beacon.appspot.com/UA-3181088-16/node-timespan/readme)](https://github.com/aurbano)

---
_Source: https://npm.io/package/readable-timespan · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
