mirror of
https://github.com/apricote/apricote.de.git
synced 2026-01-13 12:51:00 +00:00
43 lines
1.2 KiB
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>
|