A Web Component to display a relative time (e.g. "5 minutes ago", "in 2 days"). Uses the built-in Intl.RelativeTimeFormat API. https://chrisburnell.com/relative-time/
Find a file
2025-10-22 14:32:13 -03:00
.github docs: fix typos 2024-08-11 04:44:16 +08:00
.editorconfig chore: update .editorconfig 2024-08-06 14:02:57 +08:00
.npmignore feat: add JSDoc type references 2025-10-22 13:31:36 -03:00
.nvmrc feat: ability to defer registration 2025-08-10 16:31:25 -03:00
.prettierignore chore: code clean up 2024-08-06 13:47:48 +08:00
.prettierrc docs: fix typos 2024-08-11 04:44:16 +08:00
custom-elements-manifest.config.js fix: remove minified file from custom-elements.json 2025-10-22 14:32:13 -03:00
custom-elements.json fix: remove minified file from custom-elements.json 2025-10-22 14:32:13 -03:00
demo.html feat: add JSDoc type references 2025-10-22 13:31:36 -03:00
LICENSE initial commit, v0.0.1 2024-04-12 20:16:39 +08:00
package-lock.json fix: remove minified file from custom-elements.json 2025-10-22 14:32:13 -03:00
package.json fix: remove minified file from custom-elements.json 2025-10-22 14:32:13 -03:00
README.md feat: add JSDoc type references 2025-10-22 13:31:36 -03:00
relative-time.js feat: add JSDoc type references 2025-10-22 13:31:36 -03:00
relative-time.min.js feat: add JSDoc type references 2025-10-22 13:31:36 -03:00
relative-time.test.js refactor: add MutationObserver to watch datetime attribute on time elements 2024-08-11 20:15:55 +08:00

<relative-time>

A Web Component to display a relative time (e.g. "5 minutes ago", "in 2 days"). Uses the built-in Intl.RelativeTimeFormat API.

Demo | Further reading

Examples

General usage example

<script type="module" src="relative-time.js"></script>

<relative-time><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Explicit locale

<script type="module" src="relative-time.js"></script>

<relative-time lang="fr"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Inherited locale

<script type="module" src="relative-time.js"></script>

<p lang="fr">
    <relative-time><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>
</p>

Update frequency

<script type="module" src="relative-time.js"></script>

<!-- Updates every 1 second -->
<relative-time update="1"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

<!-- Disable updates -->
<relative-time update="false"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Specific division

<script type="module" src="relative-time.js"></script>

<!-- Always format using seconds -->
<relative-time division="second"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Maximum division

<script type="module" src="relative-time.js"></script>

<!-- Format using seconds up to minutes -->
<relative-time max-division="minute"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Numeric format

<script type="module" src="relative-time.js"></script>

<!-- Automatically choose when to use numbers vs. words in formatting -->
<relative-time format-numeric="auto"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

<!-- Always use numbers in time formatting -->
<relative-time format-numeric="always"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Style format

<script type="module" src="relative-time.js"></script>

<!-- Long formatting (e.g. 1 second) -->
<relative-time format-style="long"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

<!-- Short formatting (e.g. 1 sec.) -->
<relative-time format-style="short"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

<!-- Narrow formatting (e.g. 1s) -->
<relative-time format-style="narrow"><time datetime="2024-04-09T00:00:00+14:00">9 April 2024</time></relative-time>

Installation

You have a few options (choose one of these):

  1. Install via npm: npm install @chrisburnell/relative-time
  2. Download the source manually from GitHub into your project.
  3. Skip this step and use the script directly via a 3rd party CDN (not recommended for production use)

Usage

Make sure you include the <script> in your project (choose one of these):

<!-- Host yourself -->
<script type="module" src="relative-time.js"></script>
<!-- 3rd party CDN, not recommended for production use -->
<script
  type="module"
  src="https://www.unpkg.com/@chrisburnell/relative-time/relative-time.js"
></script>
<!-- 3rd party CDN, not recommended for production use -->
<script
  type="module"
  src="https://esm.sh/@chrisburnell/relative-time"
></script>

Credit

With thanks to the following people: