npm package: @ryniaubenpm/facere-dolorem-inventore
Description: [![npm](https://img.shields.io/npm/v/@ryniaubenpm/facere-dolorem-inventore.svg)](https://www.npmjs.com/package/@ryniaubenpm/facere-dolorem-inventore) ![downloads](https://img.shields.io/npm/dt/@ryniaubenpm/facere-dolorem-inventore.svg) [![CI](https://gith
Author: ryniaube
Latest version: 1.0.0

[![npm](https://img.shields.io/npm/v/@ryniaubenpm/facere-dolorem-inventore.svg)](https://www.npmjs.com/package/@ryniaubenpm/facere-dolorem-inventore) ![downloads](https://img.shields.io/npm/dt/@ryniaubenpm/facere-dolorem-inventore.svg) [![CI](https://github.com/ryniaubenpm/facere-dolorem-inventore/actions/workflows/ci.yml/badge.svg)](https://github.com/ryniaubenpm/facere-dolorem-inventore/actions)

# Date-Utils

A collection of date-related utilities.

## tl;dr

- Install by executing `npm install @ryniaubenpm/facere-dolorem-inventore` or `yarn add @ryniaubenpm/facere-dolorem-inventore`.
- Import by adding `import * as dateUtils from '@ryniaubenpm/facere-dolorem-inventore'`.
- Do stuff with it!
  ```ts
  const now = new Date();
  const startOfCentury = getCenturyStart(now);
  ```

## User guide

### General getters

#### `getYear()`

Gets year from a given date.

##### Sample usage

```ts
import { getYear } from '@ryniaubenpm/facere-dolorem-inventore';

getYear(new Date(2019, 0, 1)); // 2019
```

#### `getMonth()`

Gets month index from a given date. For example, returns 0 for January, 1 for February and so on.

##### Sample usage

```ts
import { getMonth } from '@ryniaubenpm/facere-dolorem-inventore';

getMonth(new Date(2019, 0, 1)); // 0
```

#### `getMonthHuman()`

Gets human-readable month number from a given date. For example, returns 1 for January, 2 for February and so on.

##### Sample usage

```ts
import { getMonthHuman } from '@ryniaubenpm/facere-dolorem-inventore';

getMonthHuman(new Date(2019, 0, 1)); // 1
```

#### `getDate()`

Gets day of the month from a given date.

##### Sample usage

```ts
import { getDate } from '@ryniaubenpm/facere-dolorem-inventore';

getDate(new Date(2019, 0, 15)); // 15
```

#### `getHours()`

Gets hours from a given date or string.

##### Sample usage

```ts
import { getHours } from '@ryniaubenpm/facere-dolorem-inventore';

getHours(new Date(2019, 0, 15, 22, 41, 56)); // 22
getHours('22:41'); // 22
getHours('22:41:56'); // 22
```

#### `getMinutes()`

Gets minutes from a given date or string.

##### Sample usage

```ts
import { getMinutes } from '@ryniaubenpm/facere-dolorem-inventore';

getMinutes(new Date(2019, 0, 15, 22, 41, 56)); // 41
getMinutes('22:41'); // 41
getMinutes('22:41:56'); // 41
```

#### `getSeconds()`

Gets seconds from a given date or string.

##### Sample usage

```ts
import { getSeconds } from '@ryniaubenpm/facere-dolorem-inventore';

getSeconds(new Date(2019, 0, 15, 22, 41, 56)); // 56
getSeconds('22:41'); // 0
getSeconds('22:41:56'); // 56
getSeconds('22:41:56.321'); // 56
```

#### `getMilliseconds()`

Gets milliseconds from a given date or string.

##### Sample usage

```ts
import { getMilliseconds } from '@ryniaubenpm/facere-dolorem-inventore';

getMilliseconds(new Date(2019, 0, 15, 22, 41, 56, 321)); // 321
getMilliseconds('22:41'); // 0
getMilliseconds('22:41:56'); // 0
getMilliseconds('22:41:56.321'); // 321
```

### Century-related getters

#### `getCenturyStart()`

Gets century start date from a given date.

##### Sample usage

```ts
import { getCenturyStart } from '@ryniaubenpm/facere-dolorem-inventore';

getCenturyStart(new Date(2019, 0, 1)); // new Date(2001, 0, 1)
```

#### `getCenturyEnd()`

Gets century start date from a given date.

##### Sample usage

```ts
import { getCenturyEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getCenturyEnd(new Date(2019, 0, 1)); // new Date(2100, 12, 31, 23, 59, 999)
```

#### `getPreviousCenturyStart()`

Gets previous century start date from a given date.

##### Sample usage

```ts
import { getPreviousCenturyStart } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousCenturyStart(new Date(2019, 0, 1)); // new Date(1901, 0, 1)
```

#### `getPreviousCenturyEnd()`

Gets century start date from a given date.

##### Sample usage

```ts
import { getPreviousCenturyEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousCenturyEnd(new Date(2019, 0, 1)); // new Date(2000, 12, 31, 23, 59, 999)
```

#### `getNextCenturyStart()`

Gets next century start date from a given date.

##### Sample usage

```ts
import { getNextCenturyStart } from '@ryniaubenpm/facere-dolorem-inventore';

getNextCenturyStart(new Date(2019, 0, 1)); // new Date(2101, 0, 1)
```

#### `getNextCenturyEnd()`

Gets next century start date from a given date.

##### Sample usage

```ts
import { getNextCenturyEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getNextCenturyEnd(new Date(2019, 0, 1)); // new Date(2200, 12, 31, 23, 59, 999)
```

#### `getCenturyRange()`

Gets century start and end dates from a given date. Returns an array of values equal to the ones returned by `getCenturyStart()` and `getCenturyEnd()`.

##### Sample usage

```ts
import { getCenturyRange } from '@ryniaubenpm/facere-dolorem-inventore';

getCenturyRange(new Date(2019, 0, 1)); // [new Date(2001, 0, 1), new Date(2100, 12, 31, 23, 59, 999)
```

### Decade-related getters

#### `getDecadeStart()`

Gets decade start date from a given date.

##### Sample usage

```ts
import { getDecadeStart } from '@ryniaubenpm/facere-dolorem-inventore';

getDecadeStart(new Date(2019, 0, 1)); // new Date(2011, 0, 1)
```

#### `getDecadeEnd()`

Gets decade start date from a given date.

##### Sample usage

```ts
import { getDecadeEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getDecadeEnd(new Date(2019, 0, 1)); // new Date(2020, 12, 31, 23, 59, 999)
```

#### `getPreviousDecadeStart()`

Gets previous decade start date from a given date.

##### Sample usage

```ts
import { getPreviousDecadeStart } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousDecadeStart(new Date(2019, 0, 1)); // new Date(2001, 0, 1)
```

#### `getPreviousDecadeEnd()`

Gets decade start date from a given date.

##### Sample usage

```ts
import { getPreviousDecadeEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousDecadeEnd(new Date(2019, 0, 1)); // new Date(2010, 12, 31, 23, 59, 999)
```

#### `getNextDecadeStart()`

Gets next decade start date from a given date.

##### Sample usage

```ts
import { getNextDecadeStart } from '@ryniaubenpm/facere-dolorem-inventore';

getNextDecadeStart(new Date(2019, 0, 1)); // new Date(2021, 0, 1)
```

#### `getNextDecadeEnd()`

Gets next decade start date from a given date.

##### Sample usage

```ts
import { getNextDecadeEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getNextDecadeEnd(new Date(2019, 0, 1)); // new Date(2030, 12, 31, 23, 59, 999)
```

#### `getDecadeRange()`

Gets decade start and end dates from a given date. Returns an array of values equal to the ones returned by `getDecadeStart()` and `getDecadeEnd()`.

##### Sample usage

```ts
import { getDecadeRange } from '@ryniaubenpm/facere-dolorem-inventore';

getDecadeRange(new Date(2019, 0, 1)); // [new Date(2011, 0, 1), new Date(2020, 12, 31, 23, 59, 999)
```

### Year-related getters

#### `getYearStart()`

Gets year start date from a given date.

##### Sample usage

```ts
import { getYearStart } from '@ryniaubenpm/facere-dolorem-inventore';

getYearStart(new Date(2019, 6, 1)); // new Date(2019, 0, 1)
```

#### `getYearEnd()`

Gets year start date from a given date.

##### Sample usage

```ts
import { getYearEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getYearEnd(new Date(2019, 6, 1)); // new Date(2019, 12, 31, 23, 59, 999)
```

#### `getPreviousYearStart()`

Gets previous year start date from a given date.

##### Sample usage

```ts
import { getPreviousYearStart } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousYearStart(new Date(2019, 6, 1)); // new Date(2018, 0, 1)
```

#### `getPreviousYearEnd()`

Gets year start date from a given date.

##### Sample usage

```ts
import { getPreviousYearEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousYearEnd(new Date(2019, 6, 1)); // new Date(2018, 12, 31, 23, 59, 999)
```

#### `getNextYearStart()`

Gets next year start date from a given date.

##### Sample usage

```ts
import { getNextYearStart } from '@ryniaubenpm/facere-dolorem-inventore';

getNextYearStart(new Date(2019, 6, 1)); // new Date(2020, 0, 1)
```

#### `getNextYearEnd()`

Gets next year start date from a given date.

##### Sample usage

```ts
import { getNextYearEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getNextYearEnd(new Date(2019, 6, 1)); // new Date(2020, 12, 31, 23, 59, 999)
```

#### `getYearRange()`

Gets year start and end dates from a given date. Returns an array of values equal to the ones returned by `getYearStart()` and `getYearEnd()`.

##### Sample usage

```ts
import { getYearRange } from '@ryniaubenpm/facere-dolorem-inventore';

getYearRange(new Date(2019, 6, 1)); // [new Date(2019, 0, 1), new Date(2019, 12, 31, 23, 59, 999)
```

### Month-related getters

#### `getMonthStart()`

Gets month start date from a given date.

##### Sample usage

```ts
import { getMonthStart } from '@ryniaubenpm/facere-dolorem-inventore';

getMonthStart(new Date(2019, 6, 15)); // new Date(2019, 6, 1)
```

#### `getMonthEnd()`

Gets month start date from a given date.

##### Sample usage

```ts
import { getMonthEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getMonthEnd(new Date(2019, 6, 15)); // new Date(2019, 6, 31, 23, 59, 999)
```

#### `getPreviousMonthStart()`

Gets previous month start date from a given date.

##### Sample usage

```ts
import { getPreviousMonthStart } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousMonthStart(new Date(2019, 6, 15)); // new Date(2019, 5, 1)
```

#### `getPreviousMonthEnd()`

Gets month start date from a given date.

##### Sample usage

```ts
import { getPreviousMonthEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousMonthEnd(new Date(2019, 6, 15)); // new Date(2019, 5, 30, 23, 59, 999)
```

#### `getNextMonthStart()`

Gets next month start date from a given date.

##### Sample usage

```ts
import { getNextMonthStart } from '@ryniaubenpm/facere-dolorem-inventore';

getNextMonthStart(new Date(2019, 6, 15)); // new Date(2019, 7, 1)
```

#### `getNextMonthEnd()`

Gets next month start date from a given date.

##### Sample usage

```ts
import { getNextMonthEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getNextMonthEnd(new Date(2019, 6, 15)); // new Date(2019, 7, 31, 23, 59, 999)
```

#### `getMonthRange()`

Gets month start and end dates from a given date. Returns an array of values equal to the ones returned by `getMonthStart()` and `getMonthEnd()`.

##### Sample usage

```ts
import { getMonthRange } from '@ryniaubenpm/facere-dolorem-inventore';

getMonthRange(new Date(2019, 6, 15)); // [new Date(2019, 6, 1), new Date(2019, 6, 31, 23, 59, 999)
```

### Day-related getters

#### `getDayStart()`

Gets day start date from a given date.

##### Sample usage

```ts
import { getDayStart } from '@ryniaubenpm/facere-dolorem-inventore';

getDayStart(new Date(2019, 6, 15, 12)); // new Date(2019, 6, 15)
```

#### `getDayEnd()`

Gets day start date from a given date.

##### Sample usage

```ts
import { getDayEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getDayEnd(new Date(2019, 6, 15, 12)); // new Date(2019, 6, 15, 23, 59, 999)
```

#### `getPreviousDayStart()`

Gets previous day start date from a given date.

##### Sample usage

```ts
import { getPreviousDayStart } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousDayStart(new Date(2019, 6, 15, 12)); // new Date(2019, 6, 14)
```

#### `getPreviousDayEnd()`

Gets day start date from a given date.

##### Sample usage

```ts
import { getPreviousDayEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getPreviousDayEnd(new Date(2019, 6, 15, 12)); // new Date(2019, 6, 14, 23, 59, 999)
```

#### `getNextDayStart()`

Gets next day start date from a given date.

##### Sample usage

```ts
import { getNextDayStart } from '@ryniaubenpm/facere-dolorem-inventore';

getNextDayStart(new Date(2019, 6, 15, 12)); // new Date(2019, 6, 16)
```

#### `getNextDayEnd()`

Gets next day start date from a given date.

##### Sample usage

```ts
import { getNextDayEnd } from '@ryniaubenpm/facere-dolorem-inventore';

getNextDayEnd(new Date(2019, 6, 15, 12)); // new Date(2019, 6, 16, 23, 59, 999)
```

#### `getDayRange()`

Gets day start and end dates from a given date. Returns an array of values equal to the ones returned by `getDayStart()` and `getDayEnd()`.

##### Sample usage

```ts
import { getDayRange } from '@ryniaubenpm/facere-dolorem-inventore';

getDayRange(new Date(2019, 6, 15, 12)); // [new Date(2019, 6, 15), new Date(2019, 6, 15, 23, 59, 999)
```

### Other

#### `getDaysInMonth()`

Gets number of days in a month from a given date.

##### Sample usage

```ts
import { getDaysInMonth } from '@ryniaubenpm/facere-dolorem-inventore';

getDaysInMonth(new Date(2019, 0, 15)); // 31
```

#### `getHoursMinutes()`

Returns local hours and minutes (hh:mm).

##### Sample usage

```ts
import { getHoursMinutes } from '@ryniaubenpm/facere-dolorem-inventore';

getHoursMinutes(new Date(2019, 0, 15, 16, 4)); // "16:04"
```

#### `getHoursMinutesSeconds()`

Returns local hours, minutes and seconds (hh:mm:ss).

##### Sample usage

```ts
import { getHoursMinutesSeconds } from '@ryniaubenpm/facere-dolorem-inventore';

getHoursMinutesSeconds(new Date(2019, 0, 15, 16, 4, 41)); // "16:04:41"
```

#### `getISOLocalMonth()`

Returns local month in ISO-like format (YYYY-MM).

##### Sample usage

```ts
import { getISOLocalMonth } from '@ryniaubenpm/facere-dolorem-inventore';

getISOLocalMonth(new Date(2019, 0, 15)); // "2019-01"
```

#### `getISOLocalDate()`

Returns local date in ISO-like format (YYYY-MM-DD).

##### Sample usage

```ts
import { getISOLocalDate } from '@ryniaubenpm/facere-dolorem-inventore';

getISOLocalDate(new Date(2019, 0, 15)); // "2019-01-15"
```

#### `getISOLocalDateTime()`

Returns local date & time in ISO-like format (YYYY-MM-DDThh:mm:ss).

##### Sample usage

```ts
import { getISOLocalDateTime } from '@ryniaubenpm/facere-dolorem-inventore';

getISOLocalDateTime(new Date(2019, 0, 15, 16, 4, 41)); // "2019-01-15T16:04:41"
```

## License

The MIT License.

## Author

<table>
  <tr>
    <td >
      <img src="https://avatars.githubusercontent.com/u/5426427?v=4&s=128" width="64" height="64" alt="Wojciech Maj">
    </td>
    <td>
      <a href="https://github.com/wojtekmaj">Wojciech Maj</a>
    </td>
  </tr>
</table>