mirror of
https://github.com/glanceapp/glance.git
synced 2025-06-21 18:31:24 +02:00
Properly handle future timestamps for relative time
This commit is contained in:
parent
ab6ae15836
commit
2e1134fdfb
@ -49,29 +49,35 @@ function setupCarousels() {
|
|||||||
const minuteInSeconds = 60;
|
const minuteInSeconds = 60;
|
||||||
const hourInSeconds = minuteInSeconds * 60;
|
const hourInSeconds = minuteInSeconds * 60;
|
||||||
const dayInSeconds = hourInSeconds * 24;
|
const dayInSeconds = hourInSeconds * 24;
|
||||||
const monthInSeconds = dayInSeconds * 30;
|
const monthInSeconds = dayInSeconds * 30.4;
|
||||||
const yearInSeconds = monthInSeconds * 12;
|
const yearInSeconds = dayInSeconds * 365;
|
||||||
|
|
||||||
function relativeTimeSince(timestamp) {
|
function timestampToRelativeTime(timestamp) {
|
||||||
const delta = Math.round((Date.now() / 1000) - timestamp);
|
let delta = Math.round((Date.now() / 1000) - timestamp);
|
||||||
|
let prefix = "";
|
||||||
|
|
||||||
|
if (delta < 0) {
|
||||||
|
delta = -delta;
|
||||||
|
prefix = "in ";
|
||||||
|
}
|
||||||
|
|
||||||
if (delta < minuteInSeconds) {
|
if (delta < minuteInSeconds) {
|
||||||
return "1m";
|
return prefix + "1m";
|
||||||
}
|
}
|
||||||
if (delta < hourInSeconds) {
|
if (delta < hourInSeconds) {
|
||||||
return Math.floor(delta / minuteInSeconds) + "m";
|
return prefix + Math.floor(delta / minuteInSeconds) + "m";
|
||||||
}
|
}
|
||||||
if (delta < dayInSeconds) {
|
if (delta < dayInSeconds) {
|
||||||
return Math.floor(delta / hourInSeconds) + "h";
|
return prefix + Math.floor(delta / hourInSeconds) + "h";
|
||||||
}
|
}
|
||||||
if (delta < monthInSeconds) {
|
if (delta < monthInSeconds) {
|
||||||
return Math.floor(delta / dayInSeconds) + "d";
|
return prefix + Math.floor(delta / dayInSeconds) + "d";
|
||||||
}
|
}
|
||||||
if (delta < yearInSeconds) {
|
if (delta < yearInSeconds) {
|
||||||
return Math.floor(delta / monthInSeconds) + "mo";
|
return prefix + Math.floor(delta / monthInSeconds) + "mo";
|
||||||
}
|
}
|
||||||
|
|
||||||
return Math.floor(delta / yearInSeconds) + "y";
|
return prefix + Math.floor(delta / yearInSeconds) + "y";
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateRelativeTimeForElements(elements)
|
function updateRelativeTimeForElements(elements)
|
||||||
@ -84,7 +90,7 @@ function updateRelativeTimeForElements(elements)
|
|||||||
if (timestamp === undefined)
|
if (timestamp === undefined)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
element.textContent = relativeTimeSince(timestamp);
|
element.textContent = timestampToRelativeTime(timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user