humanize-from-now
Version:
A tiny function that generates momentjs like time from now string.
55 lines (54 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MS = 1;
exports.SECOND = 1000 * exports.MS;
exports.MINUTE = 60 * exports.SECOND;
exports.HOUR = 60 * exports.MINUTE;
exports.DAY = 24 * exports.HOUR;
exports.MONTH = 30 * exports.DAY;
exports.YEAR = 365 * exports.DAY;
const AS_JUST_NOW = 5 * exports.SECOND;
const AS_SECONDS = 45 * exports.SECOND;
const AS_A_MINUTE = 90 * exports.SECOND;
const AS_MINUTES = 45 * exports.MINUTE;
const AS_AN_HOUR = 90 * exports.MINUTE;
const AS_HOURS = 22 * exports.HOUR;
const AS_A_DAY = 36 * exports.HOUR;
const AS_DAYS = 26 * exports.DAY;
const AS_A_MONTH = 45 * exports.DAY;
const AS_MONTHS = 320 * exports.DAY;
const AS_A_YEAR = 548 * exports.DAY;
exports.FAILOVER = 'N/A';
function default_1(time, failover = exports.FAILOVER) {
const t = typeof time !== 'number' ? new Date(time).getTime() : time;
if (isNaN(t))
return failover;
const now = Date.now();
const diff = now - t;
if (diff < 0)
return failover;
if (diff < AS_JUST_NOW)
return 'just now';
if (diff < AS_SECONDS)
return 'a few seconds ago';
if (diff < AS_A_MINUTE)
return 'a minute ago';
if (diff < AS_MINUTES)
return `${Math.round(diff / exports.MINUTE)} minutes ago`;
if (diff < AS_AN_HOUR)
return 'an hour ago';
if (diff < AS_HOURS)
return `${Math.round(diff / exports.HOUR)} hours ago`;
if (diff < AS_A_DAY)
return 'a day ago';
if (diff < AS_DAYS)
return `${Math.round(diff / exports.DAY)} days ago`;
if (diff < AS_A_MONTH)
return 'a month ago';
if (diff < AS_MONTHS)
return `${Math.round(diff / exports.MONTH)} months ago`;
if (diff < AS_A_YEAR)
return 'a year ago';
return `${Math.round(diff / exports.YEAR)} years ago`;
}
exports.default = default_1;