Hola, tengo una función que convierte una hora local a UTC usando la zona horaria local y la fecha:
this.conversion.dateTimeToTime('2022-07-04 12:30', 'America/Los_Angeles'); public dateTimeToTime(date, timezone = 'UTC') { date = new Date(date); return date.toLocaleTimeString('en-GB', {timeZone: timezone, hour12: false}); } }esto es 12:30 local a UTC, que debería ser 20:30 (más o menos), pero la salida es 4:30 utc en lugar de retroceder
Me pregunto qué estoy haciendo mal
Gracias
Mantener la fecha como una cadena de fecha simple (2022-01-31) provoca la pérdida de datos en JS y proporcionarla al constructor de Fecha puede dar como resultado una fecha incorrecta. Consulte esta pregunta SO para obtener más información.
Generalmente convierto mi fecha al ISO format usando Date.toISOString . Luego, cuando quiero analizarlo como objeto JS Date, uso el método parseISO de date-fns .
Aquí hay un ejemplo de CodeSandbox: https://codesandbox.io/s/summer-bush-iv0h2g?file=/src/index.js
He usado moment-tz en su lugar:
import * as moment from "moment-timezone"; let blah = moment.tz("2019-06-03 12:30", "America/Los_Angeles"); console.log(blah.format()); console.log(blah.clone().tz("UTC").format());