MySQL-Zeitstempel zu JavaScript-Date-Umwandlung nicht korrekt
-
10-10-2019 - |
Frage
so dass ich einen Zeitstempel in mysql habe, ist:
SELECT `tsdate`, UNIX_TIMESTAMP( `tsdate`) FROM t1
2010-11-07 21:50:05, 1289191805
Wenn ich die folgende versuchen und verwenden, zeigt es die falsche Zeit / Datum
var newDate = new Date();
newDate.setTime(1289191805000);
dateString = newDate.toUTCString();
alert(dateString);
Mon, 08 Nov 2010 04:50:05 GMT
Wie kann ich JavaScript bekommen das richtige Datum zu zeigen?
Ich verwende derzeit das Werkzeug highcharts zu grapth, und es wird die falsche Datum / Zeit zeigt auch (es ist in JavaScript geschrieben). Ich möchte nicht, den Code von highcharts ändern, aber ich werde, wenn nötig.
Danke, Josh
Lösung 3
Ich fand die Lösung bei http://highslide.com/forum/viewtopic .php? f = 9 & t = 8613
Highcharts.setOptions({
global: {
useUTC: false
}
});
Ich wollte auch Anthony Grist und Seldaek für einigen hilfreichen Code danken!
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
Andere Tipps
Es sieht aus wie Sie eine Zeitzone Problem haben. Wie Sie das Javascript man sehen, ist GMT, während ich Ihnen vermuten einige westliche US-Zeit ist?
Versuchen Sie, die folgenden in Ihrer MySQL-Abfrage:
SELECT UNIX_TIMESTAMP( CONVERT_TZ( tsdate, '-07:00', 'GMT') ) FROM t1
-07. 00 könnte durch was auch immer Zeitzone ersetzt werden Kennung du bist in
Eine alternative Lösung könnte sein, newDate.setTime(mysqlTimestamp + 7*3600000)
in JavaScript zu tun, anpassen, um nur dort.
Wie bereits erwähnt, toString verwendet, wird es in Ortszeit zurückzukehren, obwohl es auch zusätzliche Zeitzone Informationen hat. Ein Hack es, in Ortszeit angezeigt werden, ohne dass zusätzliche Zeitzone Informationen zu verwenden, ist getTimezoneOffset () (gibt einen Wert in Minuten) mit sechzig multipliziert mit 1000 multipliziert (um es in wenigen Sekunden zu erhalten) (in Millisekunden zu erhalten)
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);