# moment-parseplus

> Date parsing plugin for momentjs

Latest version **2.0.3** (published 2022-11-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install moment-parseplus
pnpm add moment-parseplus
yarn add moment-parseplus
bun add moment-parseplus
```

## Health

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

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.3 |
| Published | 2022-11-22 |
| First published | 2016-07-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 22.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 11 |
| Author | Ken Snyder |
| Maintainers | kensnyder |
| Keywords | moment, momentjs, date, parse, parsing, locale |

## Links

- npm: https://www.npmjs.com/package/moment-parseplus
- Repository: https://github.com/kensnyder/moment-parseplus
- Homepage: https://github.com/kensnyder/moment-parseplus#readme
- Issues: https://github.com/kensnyder/moment-parseplus/issues
- npm.io page: https://npm.io/package/moment-parseplus

## Dependencies (2)

- [moment](https://npm.io/package/moment.md) ^2.0.0
- [any-date-parser](https://npm.io/package/any-date-parser.md) 1.5.3

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 2.0.3 (latest) — 2022-11-22
- 2.0.2 — 2022-11-22
- 2.0.1 — 2022-11-22
- 2.0.0 — 2022-09-30
- 1.1.6 — 2020-08-03
- 1.1.5 — 2020-05-03
- 1.1.3 — 2019-07-10
- 1.1.1 — 2018-03-14
- 1.1.0 — 2017-12-13
- 1.0.3 — 2017-08-03
- 1.0.2 — 2016-08-04
- 1.0.1 — 2016-07-26
- 1.0.0 — 2016-07-25

## README

# moment-parseplus

[![NPM Link](https://img.shields.io/npm/v/moment-parseplus?v=2.0.3)](https://npm.com/package/moment-parseplus)
[![Build Status](https://ci.appveyor.com/api/projects/status/github/kensnyder/moment-parseplus?branch=master&svg=true&v=2.0.3)](https://ci.appveyor.com/project/kensnyder/moment-parseplus)
[![Code Coverage](https://codecov.io/gh/kensnyder/moment-parseplus/branch/master/graph/badge.svg?v=2.0.3)](https://codecov.io/gh/kensnyder/moment-parseplus)
[![ISC License](https://img.shields.io/npm/l/moment-parseplus.svg?v=2.0.3)](https://opensource.org/licenses/ISC)

A comprehensive and extensible date parsing plugin for
[Moment.js](http://momentjs.com). It allows passing a wide variety of date
formats to the `moment` constructor. Most locales are supported automatically.

_Note: The only breaking change from `moment-parseplus` 1.x to 2.x is the way
you [add custom formats](#adding-custom-formats)._

## Table of Contents

- [Motivation](#motivation)
- [Installation](#installation)
- [Usage](#usage)
- [Recognized Formats](#recognized-formats)
- [Adding Custom Formats](#adding-custom-formats)
- [Locale Support](#locale-support)
- [What is this sorcery?](#what-is-this-sorcery)
- [Sister Packages](#sister-packages)
- [Unit Testing](#unit-testing)
- [Contributing](#contributing)

## Motivation

1. The APIs I consume have a lot of different date formats
1. I want to create REST APIs that accept all major formats
1. I want to handle user-input dates
1. I want to support dates in other languages according to JavaScript's new
   `Intl` global object

## Installation

```bash
npm install moment-parseplus
```

## Usage

```js
import { moment } from 'moment-parseplus';

const date1 = moment('March 5th, 2016 at 7:05pm');
const date2 = moment('9 days ago');
const date3 = moment('2016-03-05 23:59:59 CST');
```

Or you can explicitly import `moment` separately from `moment-parseplus`:

```js
import moment from 'moment';
import 'moment-parseplus';

const date1 = moment('March 5th, 2016 at 7:05pm');
```

## Recognized Formats

- 24 hour time
- 12 hour time
- timezone offsets
- timezone abbreviations
- year month day
- year monthname day
- month day year
- monthname day year
- day month year
- day monthname year
- +/-/ago periods
- now/today/yesterday/tomorrow
- Twitter

`moment-parseplus` relies on
[any-date-parser](https://www.npmjs.com/package/any-date-parser) which supports
even more formats. See the
[exhaustive list](https://www.npmjs.com/package/any-date-parser#exhaustive-list-of-date-formats).

## Adding Custom Formats

See
[any-date-format's instructions](https://www.npmjs.com/package/any-date-parser#adding-custom-formats).

Example:

```js
const parser = require('moment-parseplus');

parser.addFormat(
	new parser.Format({
		matcher: /^Q([1-4]) (\d{4})$/,
		handler: function ([, quarter, year]) {
			const monthByQuarter = { 1: 1, 2: 4, 3: 7, 4: 10 };
			const month = monthByQuarter[quarter];
			return { year, month };
		},
	})
);

console.log(moment('Q4 2020'));
```

## Locale Support

The built-in parsers containing month and day names are automatically updated
when locale is changed using `moment.locale(name)`.

For example, setting locale to French (by including the locale file or calling
`moment.locale('fr')`), will allow parsing dates such as "15 septembre 2015".

## What is this sorcery?

Moment.js provides a `moment.createFromInputFallback` method you can define to
create additional parsing rules. `moment-parseplus` implements that function and
gets invoked when Moment.js fails to parse the given string.

## Sister Packages

- Standalone Parser:
  [any-date-parser](http://npmjs.com/packages/any-date-parser)
- DayJS: [dayjs-parser](http://npmjs.com/package/dayjs-parser)
- Luxon: [luxon-parser](http://npmjs.com/package/luxon-parser)

## Unit Testing

`moment-parseplus` has 100% code coverage.

- To run tests, run `npm test`
- To check coverage, run `npm run coverage`

Unit tests require a global install of `full-icu` and `moment`. The test runner
will attempt to install these if absent.

## Contributing

Contributions are welcome. Please open a GitHub ticket for bugs or feature
requests. Please make a pull request for any fixes or new code you'd like to be
incorporated.

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