2013-02-03 12 views
5

Ho una risposta JSON dal mio server che mi dà i timestamp UTC Unix in secondi. Lo sto analizzando in date JavaScript che verranno utilizzate in un grafico (visualizzando l'ora nelle impostazioni locali dell'utente).Date.getTimezoneOffset invertito?

Io, ovviamente, devono convincere il timestamp ho (in UTC) nella locale del browser, così ho scritto una funzione che crea una nuova Date nella locale del browser, le chiamate getTimezoneOffset() su di esso per ottenere il "Offset in minuti" in la locale corrente, come da the MDN, converte entrambi in millisecondi e restituisce la somma. Ora ho un timestamp Unix JavaScript friendly nelle impostazioni locali dell'utente.

Tuttavia, io no.

come risulta, (new Date()).getTimezoneOffset() restituisce (positivo) 300 in GMT-5 e -120 in GMT + 2. Perché l'offset è invertito? Mi sarei aspettato che l'offset corrispondesse al segno del fuso orario, ovvero: devo sottrarre 300 minuti per arrivare a GMT-5 e AGGIUNGERE 120 minuti per arrivare a GMT + 2. Invece, devo sottrarre i valori restituiti da getTimezoneOffset

+0

Vedere la descrizione [qui] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) .'This significa che l'offset è positivo se il fuso orario locale è dietro UTC e negativo se è avanti. – Jashwant

+0

quindi se avessi effettivamente fatto clic sul metodo ...... * facepalm * –

risposta

5

No.

Il spec (§15.9.5.26) dice:

15.9.5.26 Date.prototype.getTimezoneOffset()

restituisce la differenza tra l'ora locale e ora UTC in pochi minuti.

  1. Lasciate t essere questo valore di tempo.
  2. Se t è NaN, restituire NaN.
  3. Ritorno (t - LocalTime (t))/msPerMinute.
+0

quindi, fondamentalmente un problema RTFM. Forse troppo poca caffeina da parte mia. Bene, almeno è documentato: D. Grazie –

Problemi correlati