Moment: Ao construir uma data UTC com Moment.js, zone () setter não faz nada (2.8.3)

Criado em 11 set. 2014  ·  3Comentários  ·  Fonte: moment/moment

Eu obtenho exatamente o mesmo objeto de momento após executar a zona (-1), como faço quando não o executo. Exemplo:

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

Eu esperaria que isso ajustasse o objeto Date de acordo com o deslocamento do fuso horário, mas ele ajusta ... bem, nada.

Comentários muito úteis

@rquinlivan eu cavei um pouco mais fundo. Você pode passar um segundo argumento para zone() para fazê-lo manter a mesma hora:

> 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'

Então você vai acabar com:

> 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)

O que eu acredito que é o que você quer.

FWIW, todos serão mais rápidos para ajudá-lo com o código aberto se você abordar uma lacuna de funcionalidade com "ei, preciso desse recurso, como posso ajudar?" ao invés de como você fez.

Todos 3 comentários

O Moment rastreia as instâncias no tempo (ou seja, milissegundos desde 1970 UTC). O que você está fazendo quando diz utc() ou zone() , você está mudando como essa hora é _expressa_ (ou seja, dizemos "9:00" em EST, mas "6:00" em PST , mas é ao mesmo tempo). Portanto, convertê-lo novamente em uma data elimina os metadados "você deve imprimir as datas de forma diferente". Ainda é a mesma hora.

Parece que você deseja modificar a hora real? Não temos um recurso "mude o tempo para que seja exibido da mesma forma nesta outra zona", no entanto, já o discutimos (ou não, @ichernev?)

Sim, desejo modificar a hora atual. Isso é bastante limitante e provavelmente terei que parar de usar esta biblioteca por causa dessa limitação.

@rquinlivan eu cavei um pouco mais fundo. Você pode passar um segundo argumento para zone() para fazê-lo manter a mesma hora:

> 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'

Então você vai acabar com:

> 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)

O que eu acredito que é o que você quer.

FWIW, todos serão mais rápidos para ajudá-lo com o código aberto se você abordar uma lacuna de funcionalidade com "ei, preciso desse recurso, como posso ajudar?" ao invés de como você fez.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

vbullinger picture vbullinger  ·  3Comentários

benhathaway picture benhathaway  ·  3Comentários

Shoroh picture Shoroh  ·  3Comentários

M-Zuber picture M-Zuber  ·  3Comentários

tanepiper picture tanepiper  ·  3Comentários