Espero obtener una fecha de mi base de datos en formato Ymd. Esto me da valores como 20200202. Esto está bien para aplicaciones php pero estoy usando JavaScript para la interfaz.

En php, podríamos hacer algo como

$date = DateTime::createFromFormat('Ymd', '20200202');

Lo que significa que obtengo un objeto de fecha siempre que coincidan los formatos.

¿Hay alguna manera de que JavaScript haga esto?

1
Abe Caymo 13 feb. 2020 a las 11:58

2 respuestas

La mejor respuesta

Si está seguro de que esta fecha siempre tendrá el formato yyyymmdd, puede usar RegEx para extraer la fecha:

function getDate(inputDate)
{
  // TODO : Check if the format is valid
  
  
  const pattern = /(\d{4})(\d{2})(\d{2})/
  
  const parts = inputDate.match(pattern);
  
  // months start with 0 in js, that's why you need to substract 1
  // -----------------------v----------v
  return new Date(parts[1], parts[2] - 1, parts[3]);
}

console.log(getDate("20200202").toString());
console.log(getDate("20200213").toString());
console.log(getDate("20201231").toString());
2
Cid 13 feb. 2020 a las 09:14

Siempre puede verificar si el formato coincide con sus requisitos y luego dividir el valor que obtiene de la base de datos. Entonces podría devolver un valor booleano falso si no es posible o una fecha.

const dbOutput = '20200202';

const createdDate = getDate(dbOutput);


function getDate(value) {
    if(value.length !== 8) {
        return false;
    }

    const year = +value.substring(0,4);
    const month = +value.substring(4,6);
    const day = +value.substring(6,8);

    try {
        return new Date(year, month-1, day);
    } catch (error) {
        return false;
    }
}
0
Paul Costa 13 feb. 2020 a las 09:14