TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published


Downloads Version@npm Version@git CI

It provides the ability to compare date string with custom date format expression.


Testing dates with custom date format:

const dateX = require('date-x');
dateX.test("dd/MM/yyyy hh:mm:ss", "03/12/2016 11:11:32"); // true
dateX.test("dd/MM/yyyy hh:mm:ss", "03/12/2016 20:11:32"); // false

Where test is: test(format: string, dateString: string, ignoreCase?: boolean): boolean

Matching date with custom date format:

const dateX = require('date-x');
const m1 = dateX.match("dd/MM/yyyy hh:mm:ss", "03/12/2016 11:11:32");
// m1: [
//   '03/12/2016 11:11:32',
//   '03', '12', '2016',
//   '11', '11', '32',
//   index: 0, ...
// ]
const m2 = datex.match("dd/MM/yyyy hh:mm:ss", "03/12/2016 20:11:32");
// m2: null

Where match is: match(format: string, dateString: string, ignoreCase?: boolean): RegExpMatchArray

Support for localized matching.

Code Name
EN English (default)
HU Hungarian
NL Dutch
const dateX = require('date-x');
dateX.test("RRRR, EEEE", "Yesterday, Monday"); // true

dateX.test("RRRR, EEEE", "Tegnap, Hétfő"); // true

Where loadLocale is: loadLocale(local: "en" | "hu" | "nl"): void


const {
} = require("date-x/assert");

assertDateFormat("03/12/2016 11:11:32", "dd/MM/yyyy hh:mm:ss");
assertNotDateFormat("this is not a date", "yyyy-MM-dd");

Where both assertion has the following parameters:

  1. dateString: string the actual value to check
  2. format: string the date format to match
  3. options?: DateFormatAssertOptions the modifiers/options to match:
    • locale?: "hu" | "en" | "nl" the locale to use
    • ignoreCase?: boolean whether character casing should be ignored

Chai plugin

const chai = require('chai');

chai.expect("03/12/2016 11:11:32")"dd/MM/yyyy hh:mm:ss");

Date format string

It based on AngularJS date filter format tokens. The module will replace the tokens in the string in given order of the bellow tokens.

Token Description Example (EN)
LLLL Stand-alone month in year January-December
MMMM Month in year January-December
MMM Month in year Jan-Dec
MM Month in year, by number, padded 01-12
M Month in year, by number 1-12
yyyy 4 digit representation of year AD 1 => 0001, AD 2010 => 2010
yy 2 digit representation of year 00-99: AD 2001 => 01, AD 2010 => 10
y 1 digit representation of year AD 1 => 1, AD 199 => 199
Q Quarter in year 1, 2, 3, 4
EEEE Day in week Monday-Sunday
EEE Day in week Mon-Sun
RRRR Relative days Today, Yesterday, Tomorrow
dd Day in month, padded 01-31
d Day in month 1-31
Do Day in month with ordinal 1st, 2nd, 3rd, ...
WW Week of year, padded 01-53
W Week of year 1-53
ww Week of year, padded 01-53
wo Week of year with ordinal 1st, 2nd, 3rd, ...
w Week of year 1-53
GGGG Stand-alone week of year 1-53
gggg Week of year 1-53
HH Hour in day, padded 00-23
H Hour in day 0-23
hh Hour in AM/PM, padded 01-12
h Hour in AM/PM 1-12
kk Hour in day, padded 01-24
k Hour in day 1-24
mm Minute in hour, padded 00-59
m Minute in hour 0-59
sss Millisecond in second, padded 000-999
ss Second in minute, padded 00-59
s Second in minute 0-59
X Unix timestamp 1360013296
x Unix timestamp (milliseconds) 1360013296123
a AM/PM mark AM, PM
Z 4 digit (+sign) representation of the timezone offet -1200 - +1200
zzz Timezone abbreviation Eastern Standard Time, Pacific Daylight Time
zz Timezone abbreviation EST, MDT

It also supports predefined localizable formats, like: short , medium , fullDate , mediumTime , etc. in all supported locales.


Using the above-listed tokens as normal characters can be done with using the ! character in fron of a character. For example to set an a in the format, use it as !a, so that it won't match for AM/PM.

If you would like to set a ! character in the format, use the !!.

In case of characters what are not listed in the format tokens, no need to use the !.

Package Sidebar


npm i date-x

Weekly Downloads






Unpacked Size

24.8 kB

Total Files


Last publish


  • szikszail