Tengo un selector de fecha y un selector de tiempo, y estoy tratando de descubrir cómo puedo combinar sus salidas para hacer una sola ISOString para poder usarla con la API del calendario de Google. Esto es lo que he intentado:
//date = 2022-05-18 //time = 14:22 const apptdate = new Date(date) const timeSplit = time.split(':') apptDate.setHours(timeSplit[0]) apptDate.setMinutes(timeSplit[1])Lo que noto es cuando consola.log (fecha de cita) este es el resultado que obtengo: 2022-05-17T18: 22: 00.000Z
No estoy seguro de por qué cambia el día del 18 de mayo al 17 de mayo y la hora de las 14:22 a las 18:22. ¿Alguien tiene una solución para esto? O incluso una forma completamente diferente de combinar la fecha y la hora en una cadena (aparte de usar un formato de entrada local de fecha y hora, quiero mantener la fecha y la hora separadas en mi base de datos).
"2022-05-18" se analiza como UTC pero apptDate.setHours(timeSplit[0]) establece la hora local. Entonces, si el host tiene una compensación negativa, la fecha local es el 17 de mayo y la hora se establece en la hora local del 17 de mayo, no en la hora UTC del 18 de mayo.
En su lugar, use setUTCHours y setUTCMinutes .
let date = '2022-05-18'; let time = '14:22'; let apptDate = new Date(date); let timeSplit = time.split(':'); apptDate.setUTCHours(timeSplit[0]); apptDate.setUTCMinutes(timeSplit[1]); // 2022-05-18T14:22:00.000Z console.log(apptDate.toISOString()); PD. También hubo un error tipográfico: let apptdate luego apptDate .