# ddf-time-utils

> Gapminder DDF time utils

Latest version **1.0.4** (published 2018-06-05) · GPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install ddf-time-utils
pnpm add ddf-time-utils
yarn add ddf-time-utils
bun add ddf-time-utils
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2018-06-05 |
| First published | 2016-04-08 |
| Weekly downloads | 0 |
| License | GPL-3.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 63.3 KB |
| Known vulnerabilities | 0 (+12 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Vyacheslav Chub |
| Maintainers | buchslava, korel |
| Keywords | Gapminder, DDF |

## Links

- npm: https://www.npmjs.com/package/ddf-time-utils
- Repository: https://github.com/valor-software/ddf-time-utils
- Homepage: https://github.com/valor-software/ddf-time-utils#readme
- Issues: https://github.com/valor-software/ddf-time-utils/issues
- npm.io page: https://npm.io/package/ddf-time-utils

## Dependencies (2)

- [lodash](https://npm.io/package/lodash.md) 4.17.4
- [moment](https://npm.io/package/moment.md) 2.22.2

## Recent versions

- 1.0.4 (latest) — 2018-06-05
- 1.0.3 — 2018-06-05
- 1.0.2 — 2018-06-05
- 1.0.1 — 2018-06-05
- 1.0.0 — 2017-11-21
- 0.1.10 — 2017-08-31
- 0.1.8 — 2017-08-30
- 0.1.7 — 2017-04-13
- 0.1.6 — 2016-09-20
- 0.1.5 — 2016-09-20
- 0.1.4 — 2016-09-20
- 0.1.3 — 2016-09-20
- 0.1.2 — 2016-09-09
- 0.1.1 — 2016-04-26
- 0.1.0 — 2016-04-08

## README

# Gapminder DDF Time Utils

## Install

`npm i ddf-time-utils`

## Description

`ddf-time-utils` is created for DDF time format checking and manipulation.

## Exported constants

 * YEAR_TYPE
 * QUARTER_TYPE
 * MONTH_TYPE
 * WEEK_TYPE
 * DATE_TYPE

These constants describes five different kinds of time supported by DDF.

## Exported functions

 * getTimeRange(timeRangeQuery): timeRange
 * detectTimeType(time): timeType
 
More info - in `Examples` section.

## Examples

### Time type detection

```
const ddfTimeUtils = require('ddf-time-utils');

const resultYear = ddfTimeUtils.detectTimeType('2000');
const resultQuarter = ddfTimeUtils.detectTimeType('2000q1');
const resultMonth = ddfTimeUtils.detectTimeType('200001');
const resultWeek = ddfTimeUtils.detectTimeType('2000w01');
const resultDate = ddfTimeUtils.detectTimeType('2000102');

console.log(resultYear === ddfTimeUtils.YEAR_TYPE);
console.log(resultQuarter === ddfTimeUtils.QUARTER_TYPE);
console.log(resultMonth === ddfTimeUtils.MONTH_TYPE);
console.log(resultWeek === ddfTimeUtils.WEEK_TYPE);
console.log(resultDate === ddfTimeUtils.DATE_TYPE);
```

### Time type detection (incorrect time)

```
const ddfTimeUtils = require('ddf-time-utils');
const result = ddfTimeUtils.detectTimeType('200x0102');

console.log(result === null);
```

### Time range detection

```
const ddfTimeUtils = require('ddf-time-utils');

const simpleResult = ddfTimeUtils.getTimeRange(['1990']);
const multipleResult = ddfTimeUtils.getTimeRange(['1800', ['2013', '2015'], '2017', '980']);

console.log(simpleResult);
console.log(multipleResult);
```

Result:
```
[ '1990' ]
[ '1800', '2013', '2014', '2015', '2017', '980' ]
```

```
const ddfTimeUtils = require('ddf-time-utils');

const result = ddfTimeUtils.getTimeRange([['1990q1', '1992q2'], '1993q4']);

console.log(result);
```

Result:
```
[ '1990q1',
  '1990q2',
  '1990q3',
  '1990q4',
  '1991q1',
  '1991q2',
  '1991q3',
  '1991q4',
  '1992q1',
  '1992q2',
  '1993q4' ]
```

### Time range detection (incorrect way)

```
const ddfTimeUtils = require('ddf-time-utils');
// time range detection is possible only for same kind of time
// we have `year` and `quarter` types in same query
const result = ddfTimeUtils.getTimeRange(['2015', '2011q1']);

console.log(result);
```

Result:
```
null
```

```
const ddfTimeUtils = require('ddf-time-utils');
// unexpected time
const result = ddfTimeUtils.getTimeRange(['foo']);

console.log(result);
```

Result:
```
null
```

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