es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener la fecha sin procesar de un objeto de fecha en Javascript.

Estoy implementando un selector de fechas, utilizando react-datepicker. Devuelve un objeto de fecha con el evento onChange. Estoy intentando obtener la fecha de eso, para pasarla a una API. El problema, sin embargo, es que se aplican husos horarios, lo que potencialmente cambia las fechas. Solo quiero obtener el texto sin procesar de la fecha. ¿Cómo puedo hacer eso? Aquí hay un caso de prueba para lo que estoy buscando.

[
    new Date("2021-07-09"),
    new Date("2021/7/9"),
    new Date("2021.7.9"),
    new Date("07/09/2021"),
    new Date("07-09-2021"),
    new Date("07.09.2021"),
    new Date("7.9.21"),
    new Date("7/9/21"),
    new Date("7-9-21"),
    new Date("2021-07-09T00:00:00.000Z"),
    new Date("Wed, 09 July 2021 00:00:00 GMT"),
    new Date("Wed July 09 2021 21:57:30 GMT-0400 (Pacific Standard Time)"),
    new Date("2021/07/09")
  ].map(date => {
    const transformedDate = 'foo'; // Solución aquí
    return transformedDate;
  }).every(d => d === '2021-07-09');

Cuando intenté moment(date).utc(true).format("YYYY-MM-DD") obtengo imagen de fechas incorrectas.

Cuando intenté moment(date).utc(false).format("YYYY-MM-DD") obtengo imagen de descripción de la imagen.

De cualquier manera, estoy obteniendo una fecha que no quiero D: – Tengo un sandbox de código configurado si alguien quiere experimentar. ¡Gracias por la ayuda!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el texto sin formato de la fecha sin aplicar zonas horarias, puedes utilizar el método .toISOString() del objeto Date. Esto te dará una cadena de fecha estandarizada en el formato ISO 8601 en la zona horaria UTC. Luego, puedes extraer únicamente la porción de la fecha de la cadena utilizando el método .substring(). Aquí te mostramos cómo puedes modificar el caso de prueba para obtener el resultado deseado:

    [
      new Date("2021-07-09"),
      new Date("2021/7/9"),
      new Date("2021.7.9"),
      new Date("07/09/2021"),
      new Date("07-09-2021"),
      new Date("07.09.2021"),
      new Date("7.9.21"),
      new Date("7/9/21"),
      new Date("7-9-21"),
      new Date("2021-07-09T00:00:00.000Z"),
      new Date("Wed, 09 July 2021 00:00:00 GMT"),
      new Date("Wed July 09 2021 21:57:30 GMT-0400 (Pacific Standard Time)"),
      new Date("2021/07/09"),
    ].map((date) => {
      const transformedDate = date.toISOString().substring(0, 10);
      return transformedDate;
    }).every((d) => d === "2021-07-09");
    

    Esto debería darte el resultado esperado de true.

Comments are closed.