Estoy tratando de restablecer una hora ISO a la hora local, pero tengo algunos problemas para convertirla.
Actualmente yo:
// incoming ISO date let date = new Date('2021-11-08T20:31:23.746Z'); // 1. get timezone offset in hours const offset = date.getTimezoneOffset() / 60; // 2. calculate local hour let localHour = date.toISOString().split('T')[1].substring(0, 2) - offset; // 3. calculate local time let localTime = date.toISOString().replace(/[T-:]/, localHour); console.log(localTime); // ISO Date // 2021-11-08T20:31:23.746Z (original) // 2021-11-08T13:23.746Z (local timezone)En el paso 3, estoy tratando de reemplazar solo los primeros dos caracteres después de 'T', sin embargo, esta no es la solución correcta con Regex.
El constructor de fecha convierte automáticamente la fecha a su configuración regional después del análisis.
// incoming ISO date let date = new Date('2021-11-08T20:31:23.746Z'); const res = date.toLocaleString().replaceAll('/', '-').split(', ').join('T') console.log(res) // ISO Date // 2021-11-08T20:31:23.746Z (original) // 2021-11-08T13:23.746Z (local timezone)