Question

donc j'ai un horodatage dans MySQL qui est:

SELECT `tsdate`, UNIX_TIMESTAMP( `tsdate`) FROM t1
2010-11-07 21:50:05, 1289191805

Si j'essaie d'utiliser ce qui suit, il affiche la mauvaise heure / date

var newDate = new Date();
newDate.setTime(1289191805000);
dateString = newDate.toUTCString();
alert(dateString);

Mon, 08 Nov 2010 04:50:05 GMT

Comment puis-je obtenir JavaScript pour afficher la date correcte?

J'utilise actuellement l'outil Highcharts à grapth, et il montre la mauvaise date / heure ainsi (il est écrit en JavaScript). Je ne veux pas changer le code de Highcharts, mais je le ferai si nécessaire.

Merci, Josh

Était-ce utile?

La solution 3

J'ai trouvé la solution à http://highslide.com/forum/viewtopic php? f = 9 & t = 8613

Highcharts.setOptions({
   global: {
      useUTC: false
   }
});

Je voulais aussi remercier Anthony Grist et Seldaek pour un code utile!

var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);

Autres conseils

Il semble que vous avez un problème de fuseau horaire. Comme vous le voyez celui javascript est GMT, alors que je soupçonne que le vôtre est un peu de temps Ouest américain?

Effectuez les opérations suivantes dans votre requête MySQL:

SELECT UNIX_TIMESTAMP( CONVERT_TZ( tsdate, '-07:00', 'GMT') ) FROM t1

-07. 00 pourrait être remplacé par tout fuseau horaire identifiant que vous êtes dans

Une autre solution pourrait être de faire newDate.setTime(mysqlTimestamp + 7*3600000) en JavaScript pour ne régler là.

Comme mentionné précédemment, en utilisant toString le retourne à l'heure locale, mais il aura également des informations supplémentaires Fuseau horaire. Un hack pour l'afficher en heure locale, sans les informations Timezone supplémentaires, est d'utiliser getTimezoneOffset () (renvoie une valeur en minutes) multiplié par soixante (pour l'obtenir en quelques secondes) multiplié par 1000 (pour l'obtenir en millisecondes)

var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top