Created
May 16, 2018 16:09
-
-
Save pagetronic/042d1d77b68d8281962f0df8ef87f993 to your computer and use it in GitHub Desktop.
Javascript function to display date in "since" format
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function since(from, level) { | |
var durationInit = sys.time - new Date(from).getTime(); | |
var DAYS_PER_YEAR = 365.24225; | |
var M_PER_SECOND = 1000; | |
var M_PER_MINUTE = 60 * M_PER_SECOND; | |
var M_PER_HOUR = 60 * M_PER_MINUTE; | |
var M_PER_DAY = 24 * M_PER_HOUR; | |
var M_PER_WEEKS = 7 * M_PER_DAY; | |
var M_PER_MONTH = Math.floor((DAYS_PER_YEAR / 12) * M_PER_DAY); | |
var M_PER_YEAR = Math.floor(DAYS_PER_YEAR * M_PER_DAY); | |
if (durationInit < 60000 && durationInit > -60000) { | |
return getLang(durationInit > 0 ? "JUST_NOW" : "IMMEDIATELY"); | |
} | |
var durationMillis = (durationInit > 0) ? durationInit : -durationInit; | |
var years = Math.floor(durationMillis / M_PER_YEAR); | |
durationMillis = durationMillis - (years * M_PER_YEAR); | |
var months = Math.floor(durationMillis / M_PER_MONTH); | |
durationMillis = durationMillis - (months * M_PER_MONTH); | |
var weeks = Math.floor(durationMillis / M_PER_WEEKS); | |
durationMillis = durationMillis - (weeks * M_PER_WEEKS); | |
var days = Math.floor(durationMillis / M_PER_DAY); | |
durationMillis = durationMillis - (days * M_PER_DAY); | |
var hours = Math.floor(durationMillis / M_PER_HOUR); | |
durationMillis = durationMillis - (hours * M_PER_HOUR); | |
var minutes = Math.floor(durationMillis / M_PER_MINUTE); | |
durationMillis = durationMillis - (minutes * M_PER_MINUTE); | |
var seconds = Math.floor(durationMillis / M_PER_SECOND); | |
durationMillis = durationMillis - (seconds * M_PER_SECOND); | |
var space_num = " "; | |
var space = ""; | |
var since = ""; | |
since += getLang(durationInit > 0 ? "AGO_BEFORE" : "IN_BEFORE"); | |
for (var i = 0; i < 6 && level > 0; i++) { | |
var effect = false; | |
if (years > 0) { | |
since += space + years + space_num + (years > 1 ? getLang("YEARS") : getLang("YEAR")); | |
years = 0; | |
effect = true; | |
level--; | |
} else if (months > 0) { | |
since += space + months + space_num + (months > 1 ? getLang("MONTHS") : getLang("MONTH")); | |
months = 0; | |
effect = true; | |
level--; | |
} else if (weeks > 0) { | |
since += space + weeks + space_num + (weeks > 1 ? getLang("WEEKS") : getLang("WEEK")); | |
weeks = 0; | |
effect = true; | |
level--; | |
} else if (days > 0) { | |
since += space + days + space_num + (days > 1 ? getLang("DAYS") : getLang("DAY")); | |
days = 0; | |
effect = true; | |
level--; | |
} else if (hours > 0) { | |
since += space + hours + space_num + (hours > 1 ? getLang("HOURS") : getLang("HOUR")); | |
hours = 0; | |
effect = true; | |
level--; | |
} else if (minutes > 0) { | |
since += space + minutes + space_num + (minutes > 1 ? getLang("MINUTES") : getLang("MINUTE")); | |
minutes = 0; | |
effect = true; | |
level--; | |
} else if (seconds > 0) { | |
since += space + seconds + space_num + (seconds > 1 ? getLang("SECONDS") : getLang("SECOND")); | |
seconds = 0; | |
effect = true; | |
level--; | |
} | |
if (effect) { | |
if (level == 1) { | |
space = " " + getLang("AND") + " "; | |
} else { | |
space = ", "; | |
} | |
} | |
} | |
return since + getLang(durationInit > 0 ? "AGO_AFTER" : "IN_AFTER"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment