Created
October 23, 2019 17:51
-
-
Save TiagoFuelber/3f5d20e9bd6dfdc593aba2974da0c688 to your computer and use it in GitHub Desktop.
Converts a Date to short Elapsed Time
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @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