JavaScript: calcolare il tempo trascorso a partire da una data per l'attributo datetime
In JavaScript possiamo calcolare la differenza temporale per l'attributo datetime dell'elemento time.
Si tratta in pratica di calcolare quanto tempo è trascorso dalla data espressa nell'attributo datetime alla data odierna.
'use strict';
const humanTimeDiff = value => {
const date = Date.parse(value);
if(isNaN(date)) {
return '';
}
const now = new Date();
let delta = parseInt((now.getTime() - date) / 1000, 10);
delta = delta + (now.getTimezoneOffset() * 60);
if(delta < 60) {
return 'less than a minute ago';
}
if(delta < 120) {
return 'about a minute ago';
}
if(delta < (60 * 60)) {
return `${parseInt(delta / 60, 10).toString()} minutes ago`;
}
if(delta < (120 * 60)) {
return 'about an hour ago';
}
if(delta < (24 * 60 * 60)) {
return `about ${parseInt(delta / 3600, 10).toString()} hours ago`;
}
if(delta < (48 * 60 * 60)) {
return 'a day ago';
}
return `${parseInt(delta / 86400, 10).toString()} days ago`;
};
Esempio d'uso:
document.querySelectorAll('time[datetime]').forEach(time => {
let value = time.getAttribute('datetime');
console.log(humanTimeDiff(value));
});