Tengo un campo de fecha proveniente de SQL de la siguiente manera:
2022-06-30T00:00:00.000Z
Estoy tratando de obtener los primeros 10 caracteres (fecha en formato aaaa-mm-dd), pero no puedo hacerlo funcionar.
Primero, probé una función "izquierda"
textPaidThru= pt.slice(0,10)y tengo
mié 29 de junio
Entonces probé momento
let textPaidThru = moment(paidThru).format('YYYY-MM-DD');Pero estoy recibiendo esto:
2022-06-29
No importa qué método intente usar, siempre obtengo la fecha proporcionada menos un día.
Encuentro que trabajar con fechas es muy difícil en JS. ¿Hay alguna manera de obtener la parte de la fecha solo como lo proporciona SQL? Este es el valor que estoy esperando:
2022-06-30
Gracias.
Podrías usar un javascript de vainilla y analizarlo así:
Tenga en cuenta que el mes tiene un índice cero en Fecha, por lo que deberá agregar 1 a cada uno:
const dateToParse = "2022-06-30T00:00:00.000Z" let parsedDate = new Date(dateToParse) const formattedDate = `${parsedDate.getFullYear()}-${parsedDate.getMonth()+1}-${parsedDate.getDate()}` console.log(formattedDate)La razón por la que obtiene 6-29 probablemente se deba a que no vive en UTC + 0. También obtengo 6-29, pero eso es porque vivo en UTC-7.
Si observa el código a continuación, cambio la hora para que sea UTC-7 (que también debería funcionar para su zona horaria si lo que dice su perfil es UTC-3 correcto) y el registro de la consola para mí ahora muestra 6-30.
const dateToParse = "2022-06-30T07:00:00.000Z" let parsedDate = new Date(dateToParse) const formattedDate = `${parsedDate.getFullYear()}-${parsedDate.getMonth()+1}-${parsedDate.getDate()}` console.log(formattedDate)Si sabe que siempre obtendrá el mismo formato (bueno, probablemente lo hará), puede usar split , algo así como.
let dateTime = '2022-03-25T02:03:04.000Z'; let onlyDate = date.split('T')[0]; Esto dividirá la cadena en T y básicamente solo quieres la primera parte (índice de matriz 0) y eso es todo.