A tiny (349B) reusable date formatter. Extremely fast!
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!
$ npm install --save tinydate
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); //=> Current time: [16:30:09] stamp(); //=> Current time: [17:09:34]
Returns: Function
Returns a rendering function that will optionally accept a date
value as its only argument.
Type: String
Required: true
The template pattern to be parsed.
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'); // Example custom dictionary: // - Adds {MMMM} // - Overrides {DD} const stamp = tinydate('Today is: {MMMM} {DD}, {YYYY}', { MMMM: d => d.toLocaleString('default', { month: 'long' }), DD: d => d.getDate() }); stamp(today); //=> 'Today is: July 4, 2019'
Type: Date
Default: new Date()
The date from which to retrieve values. Defaults to current datetime if no value is provided.
{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
# 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)
MIT © Luke Edwards