javascript - examples - Moment.js: formatea la fecha en una zona horaria específica
moment.js examples (5)
Estoy usando Moment.js para analizar y formatear fechas en mi aplicación web. Como parte de un objeto JSON, mi servidor backend envía las fechas como un número de milisegundos desde la época UTC (desplazamiento de Unix).
Analizar las fechas en una zona horaria específica es fácil: solo añada el identificador de zona horaria RFC 822 al final de la cadena antes de analizar:
// response varies according to your timezone
moment(''3/11/2012 13:00'').utc().format("MM/DD HH:mm")
// problem solved, always "03/11 17:00"
moment(''3/11/2012 13:00 -0400'').utc().format("MM/DD HH:mm")
¿Pero cómo formateo una fecha en una zona horaria específica ? Quiero resultados consistentes independientemente de la hora actual del navegador, pero no quiero mostrar las fechas en UTC.
.zone () ha quedado en desuso, y debería usar utcOffset en su lugar:
// for a timezone that is +7 UTC hours
moment(1369266934311).utcOffset(420).format(''YYYY-MM-DD HH:mm'')
Acabo de acreos, y como tenía el mismo problema, solo publicaría los resultados que obtuve
al analizar, puede actualizar el desplazamiento (es decir, estoy analizando datos (1.1.2014) y solo quiero la fecha, 1 de enero de 2014. En GMT + 1 obtendría 31.12.2013. De modo que compenso el valor primero.
moment(moment.utc(''1.1.2014'').format());
Bueno, fue útil para mí para apoyar a través de husos horarios
segundo
Como se señala en la respuesta de Manto , .utcOffset()
es el método preferido a partir de Moment 2.9.0. Esta función usa el desplazamiento real de UTC, no el desplazamiento inverso (por ejemplo, -240 para Nueva York durante el horario de verano). Las cadenas de desplazamiento como "+0400" funcionan igual que antes:
// always "2013-05-23 00:55"
moment(1369266934311).utcOffset(60).format(''YYYY-MM-DD HH:mm'')
moment(1369266934311).utcOffset(''+0100'').format(''YYYY-MM-DD HH:mm'')
El viejo github.com/timrwood/moment/pull/671 fue desaprobado en Moment.js 2.9.0. Aceptó una cadena que contiene un identificador de zona horaria (por ejemplo, "-0400" o "-04: 00" durante -4 horas) o un número que representa minutos detrás de UTC (por ejemplo, 240 para Nueva York durante el horario de verano).
// always "2013-05-23 00:55"
moment(1369266934311).zone(-60).format(''YYYY-MM-DD HH:mm'')
moment(1369266934311).zone(''+0100'').format(''YYYY-MM-DD HH:mm'')
Para trabajar con zonas horarias con nombre en lugar de desplazamientos numéricos, incluya Momento de zona horaria y utilice .tz()
lugar:
// determines the correct offset for America/Phoenix at the given moment
// always "2013-05-22 16:55"
moment(1369266934311).tz(''America/Phoenix'').format(''YYYY-MM-DD HH:mm'')
Estaba teniendo el mismo problema con Moment.js. He instalado el momento-zona horaria, pero el problema no se resolvió. Luego, hice exactamente lo que está expuesto aquí, configuré la zona horaria y funciona como un amuleto:
moment(new Date({your_date})).zone("+08:00")
¡Muchas gracias!
Usar moment-timezone
moment(date).tz(''Europe/Berlin'').format(format)
Antes de poder acceder a una zona horaria en particular, deberá cargarla de esa manera (o utilizando los métodos alternativos que se describen here )
moment.tz.add(''Europe/Berlin|CET CEST CEMT|-10 -20 -30'')