Skip to content

Instantly share code, notes, and snippets.

@TiagoFuelber
Created October 23, 2019 17:51
Show Gist options
  • Save TiagoFuelber/3f5d20e9bd6dfdc593aba2974da0c688 to your computer and use it in GitHub Desktop.
Save TiagoFuelber/3f5d20e9bd6dfdc593aba2974da0c688 to your computer and use it in GitHub Desktop.
Converts a Date to short Elapsed Time
/**
* @param date datetime object
*
* @returns string
*
* ex menos de 1 min: (< 1 m)
* menos de 1 hora: (35 m)
* menos de 1 dia: (16 h)
* menos de 1 semana: (5 D)
* menos de 1 mês: (2 sem)
* menos de 1 ano: (3 M)
* mais de 1 ano: (2 A)
*/
const toShortElapsedTime = (date, referenceDate = new Date()) => {
const milisegundo = 1;
const segundo = milisegundo * 1000;
const minuto = segundo * 60;
const hora = minuto * 60;
const dia = hora * 24;
const semana = dia * 7;
const mes = dia * 30;
const ano = dia * 365;
const getMinutos = miliseconds => Math.floor(miliseconds / minuto);
const getHoras = miliseconds => Math.floor(miliseconds / hora);
const getDias = miliseconds => Math.floor(miliseconds / dia);
const getSemanas = miliseconds => Math.floor(miliseconds / semana);
const getMeses = miliseconds => Math.floor(miliseconds / mes);
const getAnos = miliseconds => Math.floor(miliseconds / ano);
const diff = referenceDate.getTime() - date.getTime();
if (diff < 0) {
return null;
} else if (diff < minuto) {
return '< 1 m';
} else if (diff >= minuto && diff < hora) {
return `${getMinutos(diff)} m`;
} else if (diff >= hora && diff < dia) {
return `${getHoras(diff)} h`;
} else if (diff >= dia && diff < semana) {
return `${getDias(diff)} D`;
} else if (diff >= semana && diff < mes) {
return `${getSemanas(diff)} sem`;
} else if (diff >= mes && diff < ano) {
return `${getMeses(diff)} M`;
} else if (diff >= ano) {
return `${getAnos(diff)} A`;
} else {
return null;
}
};
export default toShortElapsedTime;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment