MySQL Timestamp a JavaScript La data non convertire correttamente
-
10-10-2019 - |
Domanda
quindi ho un timestamp in MySQL che è:
SELECT `tsdate`, UNIX_TIMESTAMP( `tsdate`) FROM t1
2010-11-07 21:50:05, 1289191805
Se provo e utilizzare il seguente, viene visualizzato il momento sbagliato / data ??p>
var newDate = new Date();
newDate.setTime(1289191805000);
dateString = newDate.toUTCString();
alert(dateString);
Mon, 08 Nov 2010 04:50:05 GMT
Come posso ottenere JavaScript per mostrare la data corretta?
Attualmente sto usando i Highcharts strumento per grapth, e sta mostrando il torto di data / ora come bene (è scritto in JavaScript). Io non voglio cambiare il codice di Highcharts, ma io, se necessario.
Grazie, Josh
Soluzione 3
Ho trovato la soluzione a http://highslide.com/forum/viewtopic .php? f = 9 & t = 8613
Highcharts.setOptions({
global: {
useUTC: false
}
});
Ho anche voluto ringraziare Anthony Grist e Seldaek per un po 'di codice utile!
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);
Altri suggerimenti
Sembra che hai un problema fuso orario. Come si vede il javascript uno è GMT, mentre ho il sospetto il vostro è un po 'di tempo occidentale degli Stati Uniti?
Provare quanto segue nella query MySQL:
SELECT UNIX_TIMESTAMP( CONVERT_TZ( tsdate, '-07:00', 'GMT') ) FROM t1
-07:. 00 potrebbe essere sostituito con qualsiasi fuso orario identificatore siete in
Una soluzione alternativa potrebbe essere quella di fare in newDate.setTime(mysqlTimestamp + 7*3600000)
Javascript per regolare solo lì.
Come accennato in precedenza, utilizzando toString tornerà in ora locale, anche se avrà anche informazioni sul fuso orario aggiuntivo. Un hack per visualizzarlo in ora locale, senza le informazioni fuso orario aggiuntivo, è quello di utilizzare getTimezoneOffset () (restituisce un valore in minuti) moltiplicato per sessanta (per ottenere in pochi secondi), moltiplicato per 1000 (per farlo in millisecondi)
var newDate = new Date();
newDate.setTime(1289191805000 - (newDate.getTimezoneOffset() * 60 * 1000));
dateString = newDate.toUTCString();
alert(dateString);