mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
client/home: format absolute time
This commit is contained in:
44
client/js/util/misc.js
Normal file
44
client/js/util/misc.js
Normal file
@ -0,0 +1,44 @@
|
||||
'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};
|
Reference in New Issue
Block a user