From 2c111d2a599b3f13afc81548a78f561c878c847d Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 9 Oct 2019 19:37:49 +0300 Subject: [PATCH] humanedate --- src/components/humanedate.js | 66 +++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/src/components/humanedate.js b/src/components/humanedate.js index 9abaa952c2..1781ad7dab 100644 --- a/src/components/humanedate.js +++ b/src/components/humanedate.js @@ -1,28 +1,42 @@ -define(["datetime"], function(datetime) { +define(["datetime"], function (datetime) { "use strict"; function humaneDate(date_str) { - var format, time_formats = [ - [90, "a minute"], - [3600, "minutes", 60], - [5400, "an hour"], - [86400, "hours", 3600], - [129600, "a day"], - [604800, "days", 86400], - [907200, "a week"], - [2628e3, "weeks", 604800], - [3942e3, "a month"], - [31536e3, "months", 2628e3], - [47304e3, "a year"], - [31536e5, "years", 31536e3] - ], - dt = new Date, - date = datetime.parseISO8601Date(date_str, !0), - seconds = (dt - date) / 1e3, - i = 0; - for (seconds < 0 && (seconds = Math.abs(seconds)); format = time_formats[i++];) - if (seconds < format[0]) return 2 == format.length ? format[1] + " ago" : Math.round(seconds / format[2]) + " " + format[1] + " ago"; - return seconds > 47304e5 ? Math.round(seconds / 47304e5) + " centuries ago" : date_str + var format; + var time_formats = [ + [90, "a minute"], + [3600, "minutes", 60], + [5400, "an hour"], + [86400, "hours", 3600], + [129600, "a day"], + [604800, "days", 86400], + [907200, "a week"], + [2628e3, "weeks", 604800], + [3942e3, "a month"], + [31536e3, "months", 2628e3], + [47304e3, "a year"], + [31536e5, "years", 31536e3] + ]; + var dt = new Date(); + var date = datetime.parseISO8601Date(date_str, true); + var seconds = (dt - date) / 1e3; + var i = 0; + + for (seconds < 0 && (seconds = Math.abs(seconds)); format = time_formats[i++];) { + if (seconds < format[0]) { + if (2 == format.length) { + return format[1] + " ago"; + } + + return Math.round(seconds / format[2]) + " " + format[1] + " ago"; + } + } + + if (seconds > 47304e5) { + return Math.round(seconds / 47304e5) + " centuries ago"; + } + + return date_str; } function humaneElapsed(firstDateStr, secondDateStr) { @@ -30,12 +44,10 @@ define(["datetime"], function(datetime) { var dateOne = new Date(firstDateStr); var dateTwo = new Date(secondDateStr); var delta = (dateTwo.getTime() - dateOne.getTime()) / 1e3; - var days = Math.floor(delta % 31536e3 / 86400); var hours = Math.floor(delta % 31536e3 % 86400 / 3600); var minutes = Math.floor(delta % 31536e3 % 86400 % 3600 / 60); var seconds = Math.round(delta % 31536e3 % 86400 % 3600 % 60); - var elapsed = ""; elapsed += 1 == days ? days + " day " : ""; elapsed += days > 1 ? days + " days " : ""; @@ -46,15 +58,13 @@ define(["datetime"], function(datetime) { elapsed += elapsed.length > 0 ? "and " : ""; elapsed += 1 == seconds ? seconds + " second" : ""; elapsed += 0 == seconds || seconds > 1 ? seconds + " seconds" : ""; - return elapsed; } window.humaneDate = humaneDate; window.humaneElapsed = humaneElapsed; - return { humaneDate: humaneDate, humaneElapsed: humaneElapsed - } -}); \ No newline at end of file + }; +});