frontend/js/common/datetime/relative_time.js
Paulus Schoutsen 912969111f
Move all of hassUtil to JS (#1153)
* Move all of hassUtil to JS

* Fix tests
2018-05-09 21:33:31 -04:00

31 lines
736 B
JavaScript

/** Calculate a string representing a date object as relative time from now.
*
* Example output: 5 minutes ago, in 3 days.
*/
const tests = [
60, 'second',
60, 'minute',
24, 'hour',
7, 'day',
];
export default function relativeTime(dateObj) {
let delta = Math.abs((new Date() - dateObj) / 1000);
const format = delta >= 0 ? '%s ago' : 'in %s';
for (let i = 0; i < tests.length; i += 2) {
if (delta < tests[i]) {
delta = Math.floor(delta);
return format.replace(
'%s',
delta === 1 ? '1 ' + tests[i + 1] : delta + ' ' + tests[i + 1] + 's'
);
}
delta /= tests[i];
}
delta = Math.floor(delta);
return format.replace('%s', delta === 1 ? '1 week' : delta + ' weeks');
}