relative-time-element icon indicating copy to clipboard operation
relative-time-element copied to clipboard

Force format to absolute iso8601

Open ericslaw opened this issue 1 year ago • 2 comments
trafficstars

This code runs on github.com and displays timestamps in relative formatting... but I really NEVER want to see timestamps in relative form.

I'd so much rather that 'last week' show up as '2024-09-26 19:05:24' or anything similar to iso8601.

Perhaps this just needs a new format string (for non-duration timestamps) of 'iso8601' ?

I can convince github pages to reveal an absolute timestamp with the following snippet pasted into the console.

document.querySelectorAll('relative-time[datetime]')
    .forEach( item => {
        item.setAttribute('format','datetime')
        item.setAttribute('formatStyle','long')
        item.setAttribute('precision','minute')
    });

... but I get 'Thu, Sep 26' which is way too short.

I can use this snippet to update the title to show what I want but I still have to hover

document.querySelectorAll('relative-time[datetime]')
    .forEach( item =>
        item.setAttribute(
            "title",
            new Date(
                Math.round(
                    Date.parse( item.getAttribute("datetime") )
                    / 60000 ) * 60000
            )
                .toISOString()
                .replace(/T/," ")
                .replace(/[.].*/,"")
                +" UTC"
        )
    )

perhaps I should be looking to convince Intl.DateTimeFormat with a Locale that emits iso8601 instead?

ericslaw avatar Oct 02 '24 21:10 ericslaw

Building on your idea:

document.querySelectorAll('relative-time[datetime]').forEach(ele => { ele.outerHTML = (new Date(ele.getAttribute('datetime'))).toISOString() });

liath avatar Mar 19 '25 20:03 liath

If you want to disable the behaviour you should be able to call customElements.define('relative-time', class extends HTMLElement{}) before GitHub's JS kicks in.

keithamus avatar Mar 20 '25 12:03 keithamus