Moment: Lors de la construction d'une date UTC avec Moment.js, le setter zone() ne fait rien (2.8.3)

Créé le 11 sept. 2014  ·  3Commentaires  ·  Source: moment/moment

J'obtiens exactement le même objet de moment après avoir exécuté zone (-1) que lorsque je ne l'exécute pas. Exemple:

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

Je m'attendrais à ce que cela ajuste l'objet Date en fonction du décalage horaire, mais c'est le cas... eh bien, rien.

Commentaire le plus utile

@rquinlivan j'ai creusé un peu plus profondément. Vous pouvez passer un deuxième argument à zone() pour que l'heure de l'horloge reste la même :

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

Vous finirez donc avec :

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

Ce que je crois, c'est ce que tu veux.

FWIW, tout le monde sera plus rapide pour vous aider avec l'open source si vous abordez un écart de fonctionnalité avec "Hé, j'ai besoin de cette fonctionnalité, comment puis-je vous aider ?" plutôt que comme vous l'avez fait.

Tous les 3 commentaires

Moment garde une trace des instances dans le temps (c'est-à-dire en millisecondes depuis 1970 UTC). Ce que vous faites lorsque vous dites utc() ou zone() , vous changez la façon dont cette heure est _exprimée_ (c'est-à-dire que nous disons "9:00" dans EST mais "6:00" dans PST , mais c'est le même temps). Donc, le reconvertir en une date supprime les métadonnées "vous devriez imprimer les dates différemment". C'est toujours la même heure.

Il semble que vous vouliez modifier l'heure réelle ? Nous n'avons pas de fonctionnalité "muter l'heure pour qu'elle s'affiche de la même manière dans cette autre zone", cependant, nous en avons discuté (ou le faisons-nous, @ichernev ?)

Oui, je veux modifier l'heure réelle. C'est assez limitatif et je devrai probablement arrêter d'utiliser cette bibliothèque à cause de cette limitation.

@rquinlivan j'ai creusé un peu plus profondément. Vous pouvez passer un deuxième argument à zone() pour que l'heure de l'horloge reste la même :

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

Vous finirez donc avec :

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

Ce que je crois, c'est ce que tu veux.

FWIW, tout le monde sera plus rapide pour vous aider avec l'open source si vous abordez un écart de fonctionnalité avec "Hé, j'ai besoin de cette fonctionnalité, comment puis-je vous aider ?" plutôt que comme vous l'avez fait.

Cette page vous a été utile?
0 / 5 - 0 notes