apricote.de/layouts/partials/extend_head.html

43 lines
1.2 KiB
HTML

<script async>
// When document is ready, find relative-date elements and use relative date format
document.addEventListener("readystatechange", (event) => {
if (event.target.readyState !== "complete") {
return;
}
const formatter = new Intl.RelativeTimeFormat("en-US", {
numeric: "auto",
});
const elements = document.querySelectorAll(".relative-date");
elements.forEach((element) => {
let date;
try {
date = new Date(element.innerText);
} catch (err) {
console.error("Element does not have a proper date");
return;
}
const diffMs = new Date() - date;
const hoursSince = diffMs / 1000 / 60 / 60;
const daysSince = hoursSince / 24;
let formatted = "";
if (daysSince > 1) {
formatted = formatter.format(-Math.round(daysSince), "days");
} else if (hoursSince > 1) {
formatted = formatter.format(-Math.round(hoursSince), "hours");
} else {
formatted = "Just Now!";
}
const capitalized =
formatted.charAt(0).toUpperCase() + formatted.slice(1);
element.innerText = capitalized;
});
});
</script>