Estoy desarrollando una función a partir de una llamada API que obtiene la fecha. Para ser precisos, lo que estoy haciendo es intentar agarrar este campo, por ejemplo
17/05/2022, que está en mi aplicación como:
{new Date(job.created).toLocaleDateString()}Sin embargo, lo que me gustaría hacer es básicamente tomar lo anterior y menos 5 días. Si la fecha es mayor que esa diferencia, simplemente etiquete un h1 que diga antiguo
Tengo el siguiente código funcionando y cerrando sesión en mis fechas correctamente:
const fiveDaysAgo = new Date(today - (5*days)).toLocaleDateString() const datePosted = new Date(job.created).toLocaleDateString() console.log('five days ago is', fiveDaysAgo) console.log('date posted was', datePosted)Sin embargo, me gustaría renderizar condicionalmente, como:
{ fiveDaysAgo < datePosted <Typography> New! </Typography> }¿Alguien tiene ideas?
Puede crear una función para convertir el valor de la forma deseada. En este caso, transformas snake_case a valores de Capitalised Text .
const days = 1000 * 60 * 60 * 24; const isOutdated = (date: Date): boolean => { const nowStamp = new Date().getTime(); const dateStamp = date.getDate(); return nowStamp - dateStamp > 5 * days; };Entonces puede usarlo como cualquier otro código JS dentro de JSX return:
const Component = ({ createdAt }) => { return ( <> {!isOutdated(createdAt) && ( <Typography> New! </Typography> )} </> ) }const fiveDaysAgo = new Date(today - (5*days)).toLocaleDateString() const datePosted = new Date(job.created).toLocaleDateString() console.log('five days ago is', fiveDaysAgo) console.log('date posted was', datePosted) //then compare timestamp fiveDaysAgo = fiveDaysAgo.getTime(); datePosted = datePosted.getTime(); { fiveDaysAgo < datePosted <Typography> New! </Typography> }