relative dates

From IndieWeb


relative dates are a way of converting absolute date-times like year, month, day, and time into a more human friendly expression of time elapsed like "10 minutes ago" or "4 days ago".

Indieweb Examples

Known shows relative dates on postings. (It uses JS, so the relative dates update while the page is open.)

Bridgy show relative dates on webmentions

Woodwind shows relative dates for posts

webmention.herokuapp.com generates relative dates for webmentions

Brainstorming

From IRC:

  • aaronpk: i think my biggest complaint about relative dates is that it's often ambiguous as to when the thing actually happened. github is probably the worst at this.
    • e.g. http://werd.io/2016/petition-to-rebrand-great-britain-as-lol-britain "a day ago" was this last night? yesterday morning? <24 hours ago? between 24-48 hours ago?
    • "a month ago" is the worst tho. is that last calendar month? what if it's the 1st right now, would something yesterday be shown as a month ago?
    • is it last week? 3 weeks ago? 5 weeks ago?
  • kevinmarks: I think a smart move for relative datetimes would be to never show 1 of anything
    • so 0-119 seconds, 2-119 minutes, 2-47 hours 2-13 days 2-8 weeks, 2-23 months 2- years
    • also solves the plural problem, especially if you use 'now' for <2 seconds
    • 2-199 years 2-9 centuries 2- millennia

Pitfalls

Pitfalls to avoid when supporting relative dates:

Avoid server side relative dates

Computing and rendering relative dates on the server and thus directly in your content may have unintended negative consequences:

  • Misleading archives. If you render relative dates server side then you make archiving worse
    • Archives of your content on the Internet Archive etc. will display an out of date and thus inaccurate relative date.
  • Spurious modification dates and poor caching behavior. If you render relative dates server side then anything checking the content of the page to see if anything has changed will see a different relative date every time and generate spurious deltas, which could also generate spurious HTTP etag headers or if modified since responses

See Also