Je utilise Moment.js pour analyser et formater des dates dans mon application web. Dans le cadre d'un objet JSON, mon serveur backend envoie des dates en tant que nombre de millisecondes depuis l'époque UTC (décalage Unix).
Parser des dates dans un fuseau horaire spécifique est facile -- il suffit d'ajouter l'identifiant du fuseau horaire RFC 822 à la fin de la chaîne avant de parser :
// la réponse varie en fonction de votre fuseau horaire
const m1 = moment('3/11/2012 13:00').utc().format("MM/DD HH:mm")
// problème résolu, toujours "03/11 17:00"
const m2 = moment('3/11/2012 13:00 -0400').utc().format("MM/DD HH:mm")
console.log({ m1, m2 })
Mais comment formater une date dans un fuseau horaire spécifique ?
Je veux des résultats cohérents indépendamment de l'heure actuelle du navigateur, mais je ne veux pas afficher les dates en UTC.
2 votes
Moment ne prend pas encore en charge cela, mais ils y travaillent. github.com/timrwood/moment/pull/671
6 votes
Ce devrait simplement fonctionner. Si vous transmettez à moment une chaîne temporelle qui inclut le décalage souhaité, alors il devrait conserver ce décalage et afficher l'heure locale telle quelle, plutôt que de s'ajuster automatiquement à l'heure locale du navigateur. Si je voulais qu'il s'ajuste à l'heure locale du navigateur, alors je lui donnerais une heure UTC au lieu de lui donner explicitement un décalage à utiliser. Je veux dire... Je lui donne un décalage explicite, pourquoi le convertit-il à son propre décalage du navigateur. Conception terrible.
0 votes
@Les décalages de Triynko sont soumis à l'heure d'été, donc cela ne fonctionne pas toujours comme prévu.
1 votes
Quelque chose en relation avec cela, je veux imprimer l'heure dans un format spécifique, par exemple 15 mars 2018 mais je ne trouve pas la chaîne de format pour le faire. Le générique
DD MMM, YYYY
ne fonctionne pas, quand je l'utilise commemoment.tz("2018-02-15T14:20:00.000+0530", "Asia/Bangkok").format("DD MMM, YYYY")
. Est-ce que quelqu'un pourrait me diriger vers la documentation où je peux trouver toutes les clés pour formater l'heure en utilisant cette api.0 votes
@PramodKumar Qu'est-ce qui ne va pas? Cela donne
"15 février, 2018"
. Vouliez-vous utiliser une chaîne de formatDD MMMM, YYYY
pour obtenir"15 février, 2018"
?