From 03ec852648fb48b1d865c1cabf36e27cee130c85 Mon Sep 17 00:00:00 2001 From: James Collins Date: Tue, 28 Feb 2023 11:34:42 +1000 Subject: [PATCH] relative now works for future dates --- resources/js/helpers/datetime.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/resources/js/helpers/datetime.ts b/resources/js/helpers/datetime.ts index 6f6fab3..60ac1de 100644 --- a/resources/js/helpers/datetime.ts +++ b/resources/js/helpers/datetime.ts @@ -350,29 +350,36 @@ export class SMDate { * @returns {string} A relative date string. */ public relative(): string { + let prefix = ""; + let postfix = " ago"; + if (this.date === null) { return ""; } const now = new Date(); - const dif = Math.round((now.getTime() - this.date.getTime()) / 1000); + let dif = Math.round((now.getTime() - this.date.getTime()) / 1000); + + if (dif < 0) { + dif = Math.abs(dif); + prefix = "In "; + postfix = ""; + } if (dif < 60) { - // let v = dif; - // return v + " sec" + (v != 1 ? "s" : "") + " ago"; return "Just now"; } else if (dif < 3600) { const v = Math.round(dif / 60); - return v + " min" + (v != 1 ? "s" : "") + " ago"; + return prefix + v + " min" + (v != 1 ? "s" : "") + postfix; } else if (dif < 86400) { const v = Math.round(dif / 3600); - return v + " hour" + (v != 1 ? "s" : "") + " ago"; + return prefix + v + " hour" + (v != 1 ? "s" : "") + postfix; } else if (dif < 604800) { const v = Math.round(dif / 86400); - return v + " day" + (v != 1 ? "s" : "") + " ago"; + return prefix + v + " day" + (v != 1 ? "s" : "") + postfix; } else if (dif < 2419200) { const v = Math.round(dif / 604800); - return v + " week" + (v != 1 ? "s" : "") + " ago"; + return prefix + v + " week" + (v != 1 ? "s" : "") + postfix; } return (