tinydate
A tiny (349B) reusable date formatter. Extremely fast!
Demo
Inspired by tinytime
, this module returns a "render" function that efficiently re-render your deconstructed template. This allows for incredibly performant results!
However, please notice that this only provides a limited subset of Date methods.
If you need more, tinytime
or date-fns
are great alternatives!
Install
$ npm install --save tinydate
Usage
const tinydate = require('tinydate');
const fooDate = new Date('5/1/2017, 4:30:09 PM');
const stamp = tinydate('Current time: [{HH}:{mm}:{ss}]');
stamp(fooDate);
stamp();
API
tinydate(pattern, dict?)(date?)
Returns: Function
Returns a rendering function that will optionally accept a date
value as its only argument.
pattern
Type: String
Required: true
The template pattern to be parsed.
dict
Type: Object
Required: false
A custom dictionary of template patterns. You may override existing patterns or declare new ones.
Important: All dictionary items must be a function and must control its own formatting.
For example, when defining your own {ss}
template, tinydate
will not pad its value to two digits.
const today = new Date('2019-07-04, 5:30:00 PM');
const stamp = tinydate('Today is: {MMMM} {DD}, {YYYY}', {
MMMM: d => d.toLocaleString('default', { month: 'long' }),
DD: d => d.getDate()
});
stamp(today);
date
Type: Date
Default: new Date()
The date from which to retrieve values. Defaults to current datetime if no value is provided.
Patterns
{YYYY}
: full year; eg: 2017{YY}
: short year; eg: 17{MM}
: month; eg: 04{DD}
: day; eg: 01{HH}
: hours; eg: 06 (24h){mm}
: minutes; eg: 59{ss}
: seconds; eg: 09{fff}
: milliseconds; eg: 555
Benchmarks
# Node v10.13.0
tinydate x 160,834,214 ops/sec ±0.21% (96 runs sampled)
tinytime x 44,602,162 ops/sec ±0.34% (97 runs sampled)
time-stamp x 888,153 ops/sec ±1.27% (86 runs sampled)
License
MIT © Luke Edwards