MySQL Timestamp JavaScript Date de ne pas convertir correctement
-
10-10-2019 - |
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
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);