Comment convertir l'horodatage Unix vers l'objet date JavaScript (considérer le fuseau horaire)

var date = new Date(1257397200000​); document.write(date); ​ 

J'ai passé le code ci-dessus J'ai obtenu Wed Nov 04 2009 23:00:00 GMT-0600 (Central Standard Time)

Je recherche un moyen de créer un objet de date en fonction d'un fuseau horaire différent, par exemple pour cet horodatage Je souhaite obtenir un objet de date comme Thursday, November 5th 2009, 00:00:00 (GMT -5) .

Notez que les dates sont différentes selon les deux fuseaux horaires ci-dessus, bien qu'ils représentent le même point dans le temps . Je suis dans CST, est-ce pourquoi l'objet créé est généré à l'aide de CST?

Je vous remercie.

Non, ces dates ne sont pas différentes car elles ne représentent pas un point différent. Les deux représentent le Thu, 05 Nov 2009 05:00:00 GMT .

Date objet Date dans JavaScript est indépendant du fuseau horaire, il ne représente que le point dans le temps. Le fait que Date.toString() comprend un fuseau horaire est très trompeur, il n'y a pas d'information de fuseau horaire dans Date . Il n'y a qu'une enveloppe autour de millisecondes depuis l'époque.

Le fuseau horaire que vous voyez est basé sur les paramètres d'OS / navigateur. Vous ne pouvez pas créer l'objet Date dans un fuseau horaire différent . Envisagez d'utiliser la famille de méthodes getUTC*() pour obtenir des valeurs agnostiques de la fuseau horaire du navigateur.

BTW votre code d'exemple imprime:

 Thu Nov 05 2009 06:00:00 GMT+0100 (CET) 

Sur mon ordinateur – et c'est toujours le même moment.

Voir également

  • Problème d'ajustement du fuseau horaire javascript