tiny-relative-date

WebJar for tiny-relative-date

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

tiny-relative-date
Last Version

Last Version

1.3.0
Release Date

Release Date

Type

Type

jar
Description

Description

tiny-relative-date
WebJar for tiny-relative-date
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/wildlyinaccurate/tiny-relative-date

Download tiny-relative-date

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/tiny-relative-date/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>tiny-relative-date</artifactId>
    <version>1.3.0</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/tiny-relative-date/
implementation 'org.webjars.npm:tiny-relative-date:1.3.0'
// https://jarcasting.com/artifacts/org.webjars.npm/tiny-relative-date/
implementation ("org.webjars.npm:tiny-relative-date:1.3.0")
'org.webjars.npm:tiny-relative-date:jar:1.3.0'
<dependency org="org.webjars.npm" name="tiny-relative-date" rev="1.3.0">
  <artifact name="tiny-relative-date" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='tiny-relative-date', version='1.3.0')
)
libraryDependencies += "org.webjars.npm" % "tiny-relative-date" % "1.3.0"
[org.webjars.npm/tiny-relative-date "1.3.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

(Tiny) Relative Date

Tiny function that provides relative, localised, human-readable dates.

npm bundle size (minified + gzip) Monthly Downloads Build Status

Installation

npm install tiny-relative-date

Usage

The module returns a relativeDate function with English translations by default.

const relativeDate = require('tiny-relative-date')

The relativeDate function accepts date strings or Date objects.

relativeDate('2017-06-25 09:00') // '12 hours ago'
relativeDate(new Date()) // 'just now'

The value of "now" can also be passed as a second parameter.

const now = new Date('2017-06-25 08:00:00')
const date = new Date('2017-06-25 07:00:00')

relativeDate(date, now) // 'an hour ago'

Using a non-English locale

The tiny-relative-date module can be initialised with a locale. See the translations directory for a list of available locales.

const relativeDateFactory = require('tiny-relative-date/lib/factory')
const deTranslations = require('tiny-relative-date/translations/de')
const relativeDate = relativeDateFactory(deTranslations)

relativeDate(new Date()) // 'gerade eben'

Using a custom locale

You can also use a completely custom locale by passing a translations object instead of a locale string. Translations can be plain strings with a {{time}} placeholder, or they can be functions. See the Adding new locales section below for a list of translation keys.

const relativeDateFactory = require('tiny-relative-date/lib/factory')
const relativeDate = relativeDateFactory({
  hoursAgo: '{{time}}h ago',
  daysAgo: (days) => `${days * 24}h ago`
})

relativeDate('2017-06-25 07:00:00') // '2h ago'
relativeDate('2017-06-24 06:00:00') // '27h ago'

Contributing

Contributions are welcome! Running this project locally requires Git and Node.js.

git clone [email protected]:wildlyinaccurate/tiny-relative-date.git
cd tiny-relative-date/
npm install

Once you are set up, you can make changes to files in the src/, spec/ and translations/ directories. Build any changes you make by running

npm run build

And run the tests with

npm run test

Adding new locales

If you would like to add a new locale, please create a JSON file in the translations directory and ensure it has the following keys:

Key Default value ("en" locale)
justNow just now
secondsAgo {{time}} seconds ago
aMinuteAgo a minute ago
minutesAgo {{time}} minutes ago
anHourAgo an hour ago
hoursAgo {{time}} hours ago
aDayAgo yesterday
daysAgo {{time}} days ago
aWeekAgo a week ago
weeksAgo {{time}} weeks ago
aMonthAgo a month ago
monthsAgo {{time}} months ago
aYearAgo a year ago
yearsAgo {{time}} years ago
overAYearAgo over a year ago
secondsFromNow {{time}} seconds from now
aMinuteFromNow a minute from now
minutesFromNow {{time}} minutes from now
anHourFromNow an hour from now
hoursFromNow {{time}} hours from now
aDayFromNow tomorrow
daysFromNow {{time}} days from now
aWeekFromNow a week from now
weeksFromNow {{time}} weeks from now
aMonthFromNow a month from now
monthsFromNow {{time}} months from now
aYearFromNow a year from now
yearsFromNow {{time}} years from now
overAYearFromNow over a year from now

Versions

Version
1.3.0