perpil / dayjs-parser

Date parsing plugin for dayjs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dayjs-parser

NPM Link Build Status Code Coverage ISC License

A comprehensive and extensible date parsing plugin for dayjs. It allows passing a wide variety of date formats to dayjs(). Most locales are supported automatically.

It uses any-date-parser for parsing date strings.

Table of Contents

Motivation

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

Installation

npm install dayjs dayjs-parser

Usage

OPTION 1: Use a single import

const dayjs = require('dayjs-parser/dayjs');

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

OPTION 2: Register as a regular dayjs plugin

const dayjs = require('dayjs');
const parserPlugin = require('dayjs-parser');

dayjs.extend(parserPlugin);

const date1 = dayjs('Wed Jan 19 2022 17:52:46');
const date2 = dayjs('in 2 weeks');
const date3 = dayjs('2016-03-05T23:59:59.000Z');

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

dayjs-parser relies on any-date-format which supports even more formats. See the exhaustive list.

Adding Custom Formats

See any-date-format's instructions.

Example:

const parser = require('dayjs-parser');

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 };
		},
	})
);

Locale Support

Locales are supported by first setting the global locale:

const parserPlugin = require('dayjs-parser');
dayjs.extend(parserPlugin);
dayjs.locale('fr');

const date = dayjs('15 septembre 2015');

See the Dayjs docs on locales

Sister Packages

Unit Testing

dayjs-parser 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 dayjs. 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.

About

Date parsing plugin for dayjs

License:ISC License


Languages

Language:JavaScript 86.5%Language:Shell 13.5%