fast-date-format is significantly faster than other date formatting modules.
npm install fast-date-format
import { DateFormatter } from 'fast-date-format';
const dateFormat = new DateFormatter('YYYYMMDD');
dateFormat.format();
dateFormat.format(new Date());To escape characters in a format, surround the characters with square brackets.
const dateFormat = new DateFormatter('[Month: ]MMMM');
dateFormat.format(); // Month: DecemberSupported formatting tokens:
| Token | Example | Description |
|---|---|---|
| YYYY | 2018 |
Year |
| YY | 18 |
2 Digit Year |
| MMMM | January..December |
Month name |
| MMM | Jan..Dec |
3 letter month name |
| MM | 01..12 |
Month |
| M | 1..12 |
Month |
| HH | 00..23 |
Hours (24 hour time) |
| H | 0..23 |
Hours (24 hour time) |
| hh | 01..12 |
Hours (12 hour time) |
| h | 1..12 |
Hours (12 hour time) |
| kk | 01..24 |
Hours (24 hour time) |
| k | 1..24 |
Hours (24 hour time) |
| A | am, pm |
Post or ante meridiem |
| dddd | Monday..Sunday |
Day name |
| ddd | Mon..Sun |
3 letter day name |
| DDDD | 001..365 |
Day of year |
| DDD | 1..365 |
Day of year |
| DD | 01..31 |
Day of month |
| D | 1..31 |
Day of month |
| E | 1..7 |
Day of week |
| m | 0..59 |
Minutes |
| mm | 00..59 |
Minutes |
| s | 0..59 |
Seconds |
| ss | 00..59 |
Seconds |
| SSS | 000..999 |
Milliseconds |
| ZZ | -02:00 |
Offset from UTC |
| Z | -0200 |
Offset from UTC |
| x | 1528643900952 |
Unix timestamp in ms |
Creates a new date formatter.
Either a date format as a string or an object with the following properties:
A date format as a string.
Enables caching to increase formatting speed if set to true. Defaults to false.
Formats the date according to the dateFormat. If no date is passed the current date is used.
Adds translations for the names of months and weekdays.
dateFormat.addLocale('en', {
weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
})Three letter abbreviations of the names are being generated from the months and weekdays.
Changes the locale of the DateFormat instace to language. Build-in languages: en, de & it.
dateFormat.setLocale('en')The benchmark has been run with Node.js v24.2.0.
$ node benchmark/benchmark.js
moment x 1,063,970 ops/sec ±0.76% (90 runs sampled)
date-format x 1,209,666 ops/sec ±0.29% (96 runs sampled)
dateformat x 557,058 ops/sec ±0.36% (95 runs sampled)
fast-date-format x 10,317,337 ops/sec ±0.41% (97 runs sampled)
fecha x 740,233 ops/sec ±0.82% (52 runs sampled)
speed-date x 9,729,244 ops/sec ±0.47% (97 runs sampled)
date-fns x 417,645 ops/sec ±0.33% (92 runs sampled)
Fastest is fast-date-formatWith activated cache option:
$ node benchmark/benchmarkCache.js
moment x 1,411,803 ops/sec ±0.51% (99 runs sampled)
date-format x 1,686,897 ops/sec ±0.28% (81 runs sampled)
dateformat x 822,427 ops/sec ±0.90% (96 runs sampled)
fast-date-format x 14,652,810 ops/sec ±0.40% (95 runs sampled)
fecha x 972,796 ops/sec ±0.34% (99 runs sampled)
speed-date x 13,002,381 ops/sec ±0.43% (95 runs sampled)
date-fns x 587,636 ops/sec ±0.31% (100 runs sampled)
Fastest is fast-date-format