UNPKG

short-relative-time

Version:

Converts a time difference to a friendly string. Zero dependencies. TypeScript.

47 lines (46 loc) 1.52 kB
"use strict"; 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;