¿Es posible convertir el lunes, 07 de febrero de 2022 a las 08:30:30 p. m., hora del Pacífico, al formato de hora UTC usando el momento?
he intentado hacer esto
const endTime = timezone(filteredTimeLeft, "ddd, MMM DD, YYYY hh:mm:ss a").utcOffset(-8);'Pero, ¿cómo sabe Moment que el parámetro de fecha insertado es la hora del Pacífico?
Moment es EOL , así que comenzaré con su sucesor Luxon .
PST es una definición ambigua de zona horaria, por lo que no se admite. Use UTC-8 si se refería a la compensación exacta o IANA America/Los_Angeles etc. si desea atender el horario de verano.
const { DateTime } = require('luxon') const filteredTimeLeft = "Mon, Feb 07, 2022 08:30:30 PM" // Create a DateTime in the default zone const local = DateTime.fromFormat(filteredTimeLeft, "EEE, MMM dd, yyyy hh:mm:ss a") console.log(local.toLocaleString(DateTime.DATETIME_FULL)) //=> 7 February 2022, 8:30 pm GMT+1 // Set a custom zone, don't adjust the time const local_set_pst = local.setZone("UTC-8", { keepLocalTime: true }) console.log(local_set_pst.toLocaleString(DateTime.DATETIME_FULL)) //=> 7 February 2022, 8:30 pm GMT-8 // Adjust to UTC const pst_adjust_utc = local_set_pst.toUTC() console.log(pst_adjust_utc.toLocaleString(DateTime.DATETIME_FULL)) //=> 8 February 2022, 4:30 am UTCen un solo paso
const pst_utc = DateTime.fromFormat( filteredTimeLeft, "EEE, MMM dd, yyyy hh:mm:ss a", { zone: "UTC-8" } ).toUTC() console.log(pst_utc.toLocaleString(DateTime.DATETIME_FULL)) //=> 8 February 2022, 4:30 am UTCSimilar en el momento, que es un buen ejemplo de por qué la API cambió por luxon:
const moment = require('moment-timezone') const filteredTimeLeft = "Mon, Feb 07, 2022 08:30:30 PM" // Read time, setting a zone const endTime = moment.tz(filteredTimeLeft, "ddd, MMM DD, YYYY hh:mm:ss a", "America/Los_Angeles") console.log(endTime.format("ddd, MMM DD YYYY, h:mm:ss a")) // Mon, Feb 07 2022, 8:30:30 pm // UTC const utcEndTime = endTime.clone().utc() console.log(utcEndTime.format("ddd, MMM DD YYYY, h:mm:ss a")) // Tue, Feb 08 2022, 4:30:30 am // be careful with moment though, if you don't clone(), endTime will be modified endTime.utc() console.log(endTime.format("ddd, MMM DD YYYY, h:mm:ss a")) // Tue, Feb 08 2022, 4:30:30 amPuede leer la documentación , que lo llevará a Moment Timezone , un decorador para Moment.js que agrega soporte para zonas horarias.
Pero también puede notar que Moment.js está esencialmente obsoleto :
En general, ahora consideramos que Moment es un proyecto heredado en modo de mantenimiento. No está muerto, pero sí está hecho.
En la práctica, esto significa:
- No agregaremos nuevas características o capacidades.
- No cambiaremos la API de Moment para que sea inmutable.
- No abordaremos problemas de sacudidas de árboles o tamaño de paquetes.
- No haremos ningún cambio importante (ninguna versión 3).
- Podemos optar por no corregir errores o anomalías en el comportamiento, especialmente si son problemas conocidos de larga data.
Y que podría considerar usar en su lugar una biblioteca más moderna como Luxon , escrita por uno de los mantenedores de Moment y mantenida por el equipo de Moment.