Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lukeed/tinydate
A tiny (349B) reusable date formatter. Extremely fast!
https://github.com/lukeed/tinydate
date datetime format javascript time timestamp
Last synced: about 10 hours ago
JSON representation
A tiny (349B) reusable date formatter. Extremely fast!
- Host: GitHub
- URL: https://github.com/lukeed/tinydate
- Owner: lukeed
- License: mit
- Created: 2017-05-02T01:09:25.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-01-20T17:52:53.000Z (11 months ago)
- Last Synced: 2024-12-05T22:03:34.410Z (7 days ago)
- Topics: date, datetime, format, javascript, time, timestamp
- Language: JavaScript
- Homepage: https://jsfiddle.net/lukeed/aoy0xeze/
- Size: 47.9 KB
- Stars: 1,066
- Watchers: 16
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- awesome-tiny-js - tinydate - Date / time formatter, only supports padded numeric output (`September -> 09`), <img align="top" height="24" src="./img/tinydate.svg"> (Dates and Time / Reactive Programming)
- awesome-github-star - tinydate
- awesome-list - tinydate
- awesome-node-esm - tinydate - a tiny (349B) reusable date formatter. (Packages / Date)
README
# tinydate ![CI](https://github.com/lukeed/tinydate/workflows/CI/badge.svg) [![licenses](https://licenses.dev/b/npm/tinydate)](https://licenses.dev/npm/tinydate) [![downloads](https://badgen.now.sh/npm/dm/tinydate)](https://npmjs.org/package/tinydate)
> A tiny (349B) reusable date formatter. Extremely fast!
[Demo](https://jsfiddle.net/lukeed/aoy0xeze/)
Inspired by [`tinytime`][tinytime], this module returns a "render" function that efficiently re-render your deconstructed template. This allows for [incredibly performant](#benchmarks) results!
However, please notice that this only provides a [limited subset of Date methods](#patterns).
If you need more, [`tinytime`][tinytime] or [`date-fns`](https://github.com/date-fns/date-fns) are great alternatives!## Install
```
$ npm install --save tinydate
```## Usage
```js
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]
```## API
### tinydate(pattern, dict?)(date?)
Returns: `Function`Returns a rendering function that will optionally accept a [`date`](#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](#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.```js
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'
```#### 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.0tinydate 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](https://lukeed.com)
[tinytime]: https://github.com/aweary/tinytime