123456789101112131415161718192021222324252627282930313233343536373839404142 |
- var isDate = require('./isDate');
- var toInt = require('./toInt');
- exports = function(date, now) {
- if (!isDate(date)) date = new Date(date);
- now = now || new Date();
- if (!isDate(now)) now = new Date(now);
- var diff = (now - date) / 1000;
- var i = 0;
- var ago = diff > 0;
- diff = Math.abs(diff);
- while (diff >= secArr[i] && i < secArrLen) {
- diff /= secArr[i];
- i++;
- }
- diff = toInt(diff);
- i *= 2;
- if (diff > (i === 0 ? 9 : 1)) i += 1;
- return format(diff, i, ago);
- };
- var secArr = [60, 60, 24, 7, 365 / 7 / 12, 12];
- var secArrLen = secArr.length;
- function format(diff, i, ago) {
- return exports.i18n[i][ago ? 0 : 1].replace('%s', diff);
- }
- exports.i18n = [
- ['just now', 'right now'],
- ['%s seconds ago', 'in %s seconds'],
- ['1 minute ago', 'in 1 minute'],
- ['%s minutes ago', 'in %s minutes'],
- ['1 hour ago', 'in 1 hour'],
- ['%s hours ago', 'in %s hours'],
- ['1 day ago', 'in 1 day'],
- ['%s days ago', 'in %s days'],
- ['1 week ago', 'in 1 week'],
- ['%s weeks ago', 'in %s weeks'],
- ['1 month ago', 'in 1 month'],
- ['%s months ago', 'in %s months'],
- ['1 year ago', 'in 1 year'],
- ['%s years ago', 'in %s years']
- ];
- module.exports = exports;
|