szurubooru/static/js/util.js

44 lines
1.5 KiB
JavaScript

'use strict';
function formatRelativeTime(timeString) {
if (!timeString) {
return 'never';
}
const then = Date.parse(timeString);
const now = Date.now();
const difference = Math.abs(now - then) / 1000.0;
const future = now < then;
const descriptions = [
[60, 'a few seconds', null],
[60*2, 'a minute', null],
[60*60, '% minutes', 60],
[60*60*2, 'an hour', null],
[60*60*24, '% hours', 60*60],
[60*60*24*2, 'a day', null],
[60*60*24*30.42, '% days', 60*60*24],
[60*60*24*30.42*2, 'a month', null],
[60*60*24*30.42*12, '% months', 60*60*24*30.42],
[60*60*24*30.42*12*2, 'a year', null],
[8640000000000000/*max*/, '% years', 60*60*24*30.42*12],
];
let text = null;
for (let kv of descriptions) {
const multiplier = kv[0];
const template = kv[1];
const divider = kv[2];
if (difference < multiplier) {
text = template.replace(/%/, Math.round(difference / divider));
break;
}
}
if (text === 'a day') {
return future ? 'tomorrow' : 'yesterday';
}
return future ? 'in ' + text : text + ' ago';
}
module.exports = {formatRelativeTime: formatRelativeTime};