Skip to main content
Since Shoelace 2.0 Code stable

Relative Time

sl-relative-time

Outputs a localized time phrase relative to the current date and time.

Examples

Relative Time Basics

Localization is handled by the browser’s Intl.RelativeTimeFormat API. No language packs are required.

<!-- Shoelace 2 release date 🎉 -->
<sl-relative-time date="2020-07-15T09:17:00-04:00"></sl-relative-time>
/ Shoelace 2 release date 🎉
sl-relative-time date="2020-07-15T09:17:00-04:00"

The date attribute determines when the date/time is calculated from. It must be a string that Date.parse() can interpret or a Date object set via JavaScript.

Keeping Time in Sync

Use the sync attribute to update the displayed value automatically as time passes.

<div class="relative-time-sync">
  <sl-relative-time sync></sl-relative-time>
</div>

<script>
  const container = document.querySelector('.relative-time-sync');
  const relativeTime = container.querySelector('sl-relative-time');

  relativeTime.date = new Date(new Date().getTime() - 60000);
</script>
div.relative-time-sync
  sl-relative-time sync=true

javascript:
  const container = document.querySelector(.relative-time-sync);
  const relativeTime = container.querySelector(sl-relative-time);

  relativeTime.date = new Date(new Date().getTime() - 60000);

Formatting Styles

You can change how the time is displayed using the format attribute. Note that some locales may display the same values for narrow and short formats.



<sl-relative-time date="2020-07-15T09:17:00-04:00" format="narrow"></sl-relative-time><br />
<sl-relative-time date="2020-07-15T09:17:00-04:00" format="short"></sl-relative-time><br />
<sl-relative-time date="2020-07-15T09:17:00-04:00" format="long"></sl-relative-time>
sl-relative-time date="2020-07-15T09:17:00-04:00" format="narrow"
br
sl-relative-time date="2020-07-15T09:17:00-04:00" format="short"
br
sl-relative-time date="2020-07-15T09:17:00-04:00" format="long"

Localization

Use the lang attribute to set the desired locale.

English:
Chinese:
German:
Greek:
Russian:
English: <sl-relative-time date="2020-07-15T09:17:00-04:00" lang="en-US"></sl-relative-time><br />
Chinese: <sl-relative-time date="2020-07-15T09:17:00-04:00" lang="zh-CN"></sl-relative-time><br />
German: <sl-relative-time date="2020-07-15T09:17:00-04:00" lang="de"></sl-relative-time><br />
Greek: <sl-relative-time date="2020-07-15T09:17:00-04:00" lang="el"></sl-relative-time><br />
Russian: <sl-relative-time date="2020-07-15T09:17:00-04:00" lang="ru"></sl-relative-time>
| English:
sl-relative-time date="2020-07-15T09:17:00-04:00" lang="en-US"
br
| Chinese:
sl-relative-time date="2020-07-15T09:17:00-04:00" lang="zh-CN"
br
| German:
sl-relative-time date="2020-07-15T09:17:00-04:00" lang="de"
br
| Greek:
sl-relative-time date="2020-07-15T09:17:00-04:00" lang="el"
br
| Russian:
sl-relative-time date="2020-07-15T09:17:00-04:00" lang="ru"

Component Props

Property Default Details
date new Date()

Date | string

The date from which to calculate time from. If not set, the current date and time will be used. When passing a string, it’s strongly recommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert a date to this format in JavaScript, use date.toISOString().

format 'long'

'long' | 'short' | 'narrow'

The formatting style to use.

numeric 'auto'

'always' | 'auto'

When auto, values such as “yesterday” and “tomorrow” will be shown when possible. When always, values such as “1 day ago” and “in 1 day” will be shown.

sync false

boolean

Keep the displayed value up to date as time passes.

updateComplete A read-only promise that resolves when the component has finished updating.

Learn more about attributes and properties.