Solución:
La forma en que descubrí esto fue hacer:
var now = ((moment(Date.now()).utcOffset('-0500').format('x'));
//Parse it into native JS object:
now = new Date(parseInt(now));
Sin embargo, quiero señalar algo que espero que salve a alguien los días de tiempo por los que esto me agobiaba. Mi problema principal era que Amazon Lambda proporcionaba la hora en UTC, sin importar lo que estuviera haciendo. La solución para este problema fue simplemente establecer la variable de entorno Node TZ:
process.env.TZ = 'America/New_York';
Primero, instale la zona horaria del momento e instale todas las zonas horarias usando timezone-with-data.js
o específicamente solo cargue las zonas horarias que necesita
Si tiene una fecha que sabe que está en UTC y desea convertirla a la hora del Este, utilice el moment.utc()
función para analizar realmente la cadena de fechas UTC. Entonces cuando llamas .tz()
en él se convertirá correctamente:
moment.utc(date_string).tz("America/New_York")
Si simplemente lo haces moment(date_string).tz("America/New_York")
la hora se analiza en su zona horaria local de forma predeterminada y no ajustará la fecha.
La hora estándar del este (EST) está 5 horas por detrás de la hora universal coordinada (UTC).
Con moment.js, puede restar 5 horas de la zona horaria UTC.
moment.utc().subtract(5, 'hours').format("YYYY-MM-DD HH:mm:ss.SSS")
O
Si está dispuesto a agregar otra biblioteca como moment-timezone
. Puedes usar:
moment().tz("America/New_York").format("YYYY-MM-DD HH:mm:ss.SSS")