Elegí una fecha de matDatePIcker en angular y la pasé a la aplicación en la nube. Pero el DateTime luego se convierte en función de la zona horaria antes de pasar a la API. Esto conduce a la creación de discrepancias de fechas cuando la función de la nube realiza cálculos de fechas con los datos recibidos.
Por ejemplo: estoy eligiendo la fecha como "2022-01-07" y luego encadenándola y pasándola a la API para que se convierta con la zona horaria local (la mía es 'Asia/Kolkata') y solo la estaba recibiendo como "2022-01-06T18:30:00.000Z" . Quiero convertir esto con la fecha exacta que elige el usuario. Y actualmente, estaba tratando de tomar la local time zone como una entrada adicional y luego necesitaba convertirla a una fecha de hora particular. Pero la zona horaria dada no es directamente convertible en base a esto.
¿Alguien puede tener alguna sugerencia para resolver esto? Gracias de antemano.
Puede convertir una fecha dada en una cadena localizada para una zona horaria usando
new Date([your date].toLocaleString("en", { timeZone: [some timezone] }));Aquí hay un pequeño ayudante:
const dt = new Date(`2022/01/09`); document.querySelector(`pre`).textContent = `now in\n \u2713 Kolkata: ${ dateTime4TZ(`Asia/Kolkata`)}\n \u2713 Amsterdam: ${ dateTime4TZ(`Europe/Amsterdam`)}\n \u2713 Tokyo: ${ dateTime4TZ(`Asia/Tokyo`)}\n \u2713 Auckland: ${ dateTime4TZ(`Pacific/Auckland`)}\n\n"2022/01/09" in\n \u2713 Kolkata: ${ dateTime4TZ(`Asia/Kolkata`, dt)}\n \u2713 Amsterdam: ${ dateTime4TZ(`Europe/Amsterdam`, dt)}\n \u2713 Tokyo: ${ dateTime4TZ(`Asia/Tokyo`, dt)}\n \u2713 Auckland: ${ dateTime4TZ(`Pacific/Auckland`, dt)}`; function dateTime4TZ(timeZone, dt = new Date) { const pad = (nr, len=2) => `${nr}`.padStart(len, `0`); const localDT = new Date(dt.toLocaleString("en", { timeZone })); return `${localDT.getFullYear()}-${ pad(localDT.getMonth() + 1)}-${ pad(localDT.getDate())}T${ pad(localDT.getHours())}:${ pad(localDT.getMinutes())}:${ pad(localDT.getSeconds())}.${ pad(localDT.getMilliseconds(), 3)}Z`; }; <pre></pre>