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

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

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top