tinytime

⏰ A straightforward date and time formatter in

Github stars Tracking Chart

Tinytime ⏰

A straightforward date and time formatter in <800b.

API

tinytime exports a single function that returns a template object. This object has a single method, render, which
takes a Date and returns a string with the rendered data.


import tinytime from 'tinytime';
const template = tinytime('The time is {h}:{mm}:{ss}{a}.');
template.render(new Date());
// The time is 11:10:20PM.

Substitutions

  • MMMM - Full Month (September)
  • MM - Partial Month (Sep)
  • Mo - Numeric Month (9) 1
  • YYYY - Full Year (1992)
  • YY - Partial Year (92)
  • dddd - Day of the Week (Monday)
  • DD - Day of the Month (24)
  • Do - Day (24th)
  • h - Hours - 12h format
  • H - Hours - 24h format
  • mm - Minutes (zero padded)
  • ss - Seconds (zero padded)
  • a - AM/PM

1 - you get padded months (09 instead of 9) by passing in the padMonth option.

const template = tinytime('{Mo}', { padMonth: true })

Efficiency

tinytime takes an approach similar to a compiler and generates an AST representing your template. This AST is generated when
you call the main tinytime function. This lets you efficiently re-render your template without tinytime having to parse the
template string again. That means its important that you aren't recreating the template object frequently.

Here's an example showing the right and wrong way to use tinytime with React.

Don't do this:

function Time({ date }) {
  return (
    <div>
      {tinytime('{h}:{mm}:{ss}{a}').render(date)}
    </div>
  )
}

Instead, only create the template object once, and just re-render it.

const template = tinytime('{h}:{mm}:{ss}{a}');
function Time({ date }) {
  return (
    <div>
      {template.render(date)}
    </div>
  )
}

Babel Plugins

Using one of the plugins below, you can resolve this efficiency concern at compile time.

babel-plugin-transform-tinytime - Hoists tinytime calls out of the JSX render scope.

babel-plugin-tinytime - Hoists tinytime calls out of the current scope, regardless if its inside JSX or a ordinary function scope.

Main metrics

Overview
Name With Owneraweary/tinytime
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 2)
Platform
License:MIT License
所有者活动
Created At2017-01-19 23:37:50
Pushed At2023-01-12 05:12:08
Last Commit At2019-07-09 16:29:13
Release Count10
Last Release Namev0.2.6 (Posted on 2017-06-03 13:43:59)
First Release Namev0.1.0 (Posted on 2017-01-24 09:52:37)
用户参与
Stargazers Count1.3k
Watchers Count15
Fork Count38
Commits Count53
Has Issues Enabled
Issues Count10
Issue Open Count4
Pull Requests Count20
Pull Requests Open Count15
Pull Requests Close Count14
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private