A lightweight library to format date strings based on time difference
Timean.js
A lightweight (~1.2kB gzipped) library to format date strings based on time difference.
Features
- ?️ Ligthweight
- ? Blazing fast
- ? Browser, Node.js and React Native compatible
- ? Clean and intuitive API
- ? Good documentation and support
Timean.js allows you to format meaningful date strings like:
just now
5 days ago
1 year ago
10 seconds ago
in 2 days
in 3 months
and more...
Installation
yarn add timean
or
npm install --save timean
How to use?
To start to use this package you need to import it:
import timean from "timean"; //ES6 import
or
const timean = require("timean"); //CommonJS
Now you can call use the appropriated method:
const date = new Date('2021-01-01');
const formattedString = timean.fromNow(date);
const date1 = new Date('2021-01-01');
const date2 = new Date('2021-01-02');
const formattedString = timean.from(date1, date2);
Customizing (Locale)
You can pass the an object config
as parameter when call from()
or fromNow()
, like this:
//...
// See the config options below on this docs.
const customConfig = {
current: 'agora',
past: {
day: { singular: '%d dia atrás', plural: '%d dias atrás' },
minute: { singular: '%d minuto atrás', plural: '%d minutos atrás' },
hour: { singular: '%d hora atrás', plural: '%d horas atrás' },
month: { singular: '%d mês atrás', plural: '%d meses atrás' },
second: "%d segundos atrás", //You can use a string directly.
year: { singular: '%d ano atrás', plural: '%d anos atrás' }
},
}
const formattedString = timean.from(date1, date2, customConfig);
If you want to define a default configuration and avoid to pass a config
parameter on each call of from(...)
or fromNow(...)
, you can create a instance of Timean using:
//...
const timeFormatter = timean.create({ ...config });
const formattedString = timeFormatter.from(date1, date2);
Note: all fields are optional, when you overwrite a field just it will be merged with default configuration.
Customizing (Replacer)
By default, Timean.js replaces "%d"
by the calculated time difference result. You can edit the replacer combination passing a property replacer: any_string_or_regex_you_want
in the config
object.
API
Timean has a clean and powerful API, it allows you to generate formatted time strings easily.
create(config?: LocaleConfig)
from(initialDate: Date, finalDate: Date, config?: LocaleConfig)
fromNow(date: Date, config?: LocaleConfig)
Types
type StringWithPlural = { singular: string; plural: string; }
type LocaleConfig = {
current: string,
replacer: string,
past: {
day: string | StringWithPlural,
hour: string | StringWithPlural,
minute: string | StringWithPlural,
month: string | StringWithPlural,
second: string | StringWithPlural,
year: string | StringWithPlural,
},
future: {
day: string | StringWithPlural,
hour: string | StringWithPlural,
minute: string | StringWithPlural,
month: string | StringWithPlural,
second: string | StringWithPlural,
year: string | StringWithPlural,
}
}
Help me help you
I will be very happy if you can support me to keep creating new open source packages.
Consider ⭐ starring this repository and
? spread the word about this package!
License
MIT