short-relative-time
Version:
Converts a time difference to a friendly string. Zero dependencies. TypeScript.
47 lines (46 loc) • 1.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @return string representing time difference nicely
* @param t1 either the time or the base time
* @param t2 if not given, it assumes base time is present time.
* @param gross - either more accurate or more gross
* @param language (currently english only)
*/
function relativeTime(t1, t2, gross = true, language = 'en') {
if (!t2) {
t2 = new Date(t1);
t1 = new Date();
}
const diffInMinutes = (t1.getTime() - t2.getTime()) / 60000;
const timeParts = [
{ Year: Math.floor(diffInMinutes / 60 / 24 / 30 / 12) },
{ Month: Math.floor(diffInMinutes / 60 / 24 / 30) },
{ Week: Math.floor(diffInMinutes / 60 / 24 / 7) },
{ Day: Math.floor(diffInMinutes / 60 / 24) },
{ Hour: Math.floor(diffInMinutes / 60) },
{ Minute: Math.round(diffInMinutes / 5) * 5 }
];
let result = '';
let levels = 2;
for (let v of timeParts) {
const timePartValue = Object.values(v)[0];
if (!timePartValue)
continue;
let name = Object.keys(v)[0];
if (timePartValue > 1)
name += 's';
result += timePartValue + ' ' + name + ' ';
if (gross || !--levels)
break;
}
if (!result.length)
return '';
switch (language) {
case 'en':
return result + ' ago';
case 'he':
return `${result} לפני`;
}
}
exports.relativeTime = relativeTime;
;