Voici une approche TypeScript. Je reçois une date du Back-End en tant que chaîne de caractères, d'où l'explication dans l'annotation. J'ai construit une fonction d'aide qui ressemble à ceci :
/**
* Une fonction qui calcule la différence de temps en secondes entre la date d'entrée (en chaîne de caractères) et la date actuelle
* puis parcourt plusieurs intervalles de temps (année, mois, semaine, jour, heure et minute) pour trouver le plus approprié
* pour la représentation du temps relatif.
* Si la différence de temps est inférieure à une minute, cela renvoie "maintenant".
* @param inputDateString - Date JS sous forme de chaîne de caractères, par exemple : `2023-06-30T11:19:49.259Z`
*/
static getRelativeTimeFromDate(inputDateString: string): string {
const inputDate = new Date(inputDateString);
const currentDate = new Date();
const timeDifferenceInSeconds = Math.floor((currentDate.getTime() - inputDate.getTime()) / 1000);
const intervals = {
year: 31536000,
month: 2592000,
week: 604800,
day: 86400,
hour: 3600,
minute: 60,
};
for (const interval in intervals) {
const numberOfUnits = Math.floor(timeDifferenceInSeconds / intervals[interval]);
if (numberOfUnits >= 1) {
return `${numberOfUnits} ${interval}${numberOfUnits > 1 ? 's' : ''} auparavant`;
}
}
return 'maintenant';
}
0 votes
Vérifiez ceci - formatjs.io/docs/polyfills/intl-relativetimeformat