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));
});