Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
Problema vacío de formato de fecha y hora del selector de fecha Vue2

Estoy usando vue2-datepicker para representar la hora de inicio y finalización de la reunión en una empresa. En nuestro backend, almacenamos las fechas en formato "AAAA-MM-DD HH:mm", pero cuando obtenemos los datos, los convertimos en el gancho montado () en "DD-MM-AAAA HH:mm" porque en nuestro país esta es la forma correcta de representar la fecha.

Estoy usando el mismo método para todos los selectores de fechas, pero este me molesta con HH: mm. Cuando los datos provienen de la API, utilizo una función llamada " responseDateTimeFormatter " que corta la fecha con formato YYYY-MM-DD HH:mm y la convierte en la que mencioné anteriormente. Cuando publico los datos, también uso requestDateTimeFormatter para convertirlos nuevamente como YYYY-MM-DD HH:mm para almacenarlos en la base de datos.

Aquí está el problema, después de convertir los datos al formato que quiero, los <date-picker>s están todos vacíos. A pesar de que su atributo de formato está configurado en el mismo que el de mi fecha.

Aquí están mis códigos:

Selector de fechas:

 <date-picker ref="startDatepicker" id="startDate" name="startDate" v-model="meeting.startDate" :first-day-of-week="1" type="datetime" format="DD-MM-YYYY HH:mm" @change="startDateClick" :disabled-date="disableStartDate" :time-picker-options="timePickerOptions"></date-picker>

Después de convertir los datos, el modelo v se ve de la siguiente manera

 meetingStartDate = 30-07-2022 09:30

Como expliqué anteriormente, está en YYYY-MM-DD HH:mm cuando proviene de la respuesta. Lo convierto con la función responseFormatter a continuación;

 responseTimeFormatter(dateTime) { var day = dateTime.slice(8, 10); var month = dateTime.slice(5, 7); var year = dateTime.slice(0, 4); var time = dateTime.slice(11, 16); return day + "-" + month + "-" + year + " " + time; },

Aquí está mi bloque then() ;

 .then((response) => { this.meeting = response console.log("MEETING", this.meeting) this.meeting.startDate = this.responseTimeFormatter(response.startDate) console.log("Start Date", this.meeting.startDate) this.meeting.endDate = this.responseTimeFormatter(response.endDate) console.log("End Date", this.meeting.endDate) })

Entonces, después de todo esto, meeting.startDate tiene el formato correcto. El modelo v del Selector de fechas anterior tiene el formato correcto (lo mismo que el atributo de formato del selector de fechas), pero aún no veo la fecha en mi selector de fechas. Esta vacio. ingrese la descripción de la imagen aquí

No hay problema cuando lo uso sin HH:mm pero en formato datetime me da este problema. ¿Hay alguien que haya experimentado este problema? ¿Cuál es la solución? Gracias por adelantado.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Revisé el paquete vue2-datepicker y cuando paso la fecha de la cadena como entrada, me muestra un campo vacío, así que creo que no acepta el tipo de cadena como una fecha, debe pasar un objeto de fecha

en realidad, no necesita que la función responseTimeFormatter pase su cadena DateTime al objeto Date, y listo :)

modifica tu then bloque así:

 .then((response) => { this.meeting = response this.meeting.startDate = new Date(response.startDate) this.meeting.endDate = new Date(response.endDate) })

Para convertir esa cadena larga que proviene del objeto Fecha a su formato de back-end, puede usar esta manera

defina estas dos funciones en su objeto de methods :

 methods: { padTo2Digits(num) { return num.toString().padStart(2, "0"); }, formatDate(date) { return ( [ date.getFullYear(), this.padTo2Digits(date.getMonth() + 1), this.padTo2Digits(date.getDate()), ].join("-") + " " + [ this.padTo2Digits(date.getHours()), this.padTo2Digits(date.getMinutes()), this.padTo2Digits(date.getSeconds()), ].join(":") ); }, },

y cuando llame a su API para enviar datos a su backend, use esto:

 // some code here for API call this.formatDate(this.meeting.startDate)

Referencias :

Formatee una fecha como AAAA-MM-DD hh: mm: ss en JavaScript

Objeto de fecha JavaScript

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda