Moment: Al construir una fecha UTC con Moment.js, zone () setter no hace nada (2.8.3)

Creado en 11 sept. 2014  ·  3Comentarios  ·  Fuente: moment/moment

Obtengo exactamente el mismo objeto de momento después de ejecutar la zona (-1) que cuando no lo ejecuto. Ejemplo:

console.log (momento (). utc (). toDate ());
console.log (momento (). utc (). zone (-1) .toDate ());

Esperaría que esto ajustara el objeto Date de acuerdo con el desplazamiento de la zona horaria, pero lo hace ... bueno, nada.

Comentario más útil

@rquinlivan Cavé un poco más profundo. Puede pasar un segundo argumento a zone() para que mantenga la misma hora del reloj de pared:

> moment().format()
'2014-09-15T16:59:30-04:00'
> moment().zone(-1).format()
'2014-09-15T21:59:35+01:00'
> moment().zone(-1, true).format()
'2014-09-15T16:59:38+01:00'

Entonces terminarás con:

> moment().toDate()
Mon Sep 15 2014 17:00:16 GMT-0400 (EDT)
> moment().zone(-1, true).toDate()
Mon Sep 15 2014 12:00:19 GMT-0400 (EDT)

Lo que creo que es lo que quieres.

FWIW, todos serán más rápidos para ayudarlo con el código abierto si se acerca a una brecha de funcionalidad con "oye, necesito esta función, ¿cómo puedo ayudar?" en lugar de como lo hizo usted.

Todos 3 comentarios

Moment realiza un seguimiento de las instancias en el tiempo (es decir, milisegundos desde 1970 UTC). Lo que estás haciendo cuando dices utc() o zone() , estás cambiando la forma en que se _expresa_ esa hora (es decir, decimos "9:00" en EST pero "6:00" en PST , pero es la misma hora). Por lo tanto, volver a convertirlo en una fecha elimina los metadatos de "debería imprimir las fechas de manera diferente". Sigue siendo la misma hora.

¿Parece que quieres modificar la hora real? Sin embargo, no tenemos una función de "mutar la hora para que se muestre de la misma manera en esta otra zona", la hemos discutido (¿o nosotros, @ichernev?)

Sí, quiero modificar la hora real. Esto es bastante limitante y probablemente tendré que dejar de usar esta biblioteca debido a esta limitación.

@rquinlivan Cavé un poco más profundo. Puede pasar un segundo argumento a zone() para que mantenga la misma hora del reloj de pared:

> moment().format()
'2014-09-15T16:59:30-04:00'
> moment().zone(-1).format()
'2014-09-15T21:59:35+01:00'
> moment().zone(-1, true).format()
'2014-09-15T16:59:38+01:00'

Entonces terminarás con:

> moment().toDate()
Mon Sep 15 2014 17:00:16 GMT-0400 (EDT)
> moment().zone(-1, true).toDate()
Mon Sep 15 2014 12:00:19 GMT-0400 (EDT)

Lo que creo que es lo que quieres.

FWIW, todos serán más rápidos para ayudarlo con el código abierto si se acerca a una brecha de funcionalidad con "oye, necesito esta función, ¿cómo puedo ayudar?" en lugar de como lo hizo usted.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

IbraheemAlSaady picture IbraheemAlSaady  ·  3Comentarios

RobinvanderVliet picture RobinvanderVliet  ·  3Comentarios

danieljsinclair picture danieljsinclair  ·  3Comentarios

Shoroh picture Shoroh  ·  3Comentarios

BonBonSlick picture BonBonSlick  ·  3Comentarios