Domanda

Ho un problema con la classe Date Ext apparentemente restituire il fuso orario sbagliato per una data analizzata. Usando il codice seguente crea un oggetto data per il 24 Maggio 1966 15:46 BST:

date = "1966-05-24T15:46:01+0100";
var pDate = Date.parseDate(date, "Y-m-d\\TH:i:sO", false);

Ho poi chiamo questo:

console.log(pDate.getGMTOffset());

Mi aspetto di ottenere il correttore associato con la data indietro orignal (che è GMT + 1), ma invece ottengo il fuso orario locale del browser. Se il browser è impostato su un fuso orario GMT abbastanza avanti, la parte giorno della data sarà inoltre essere riportata (per cui la data appare ora come 25 maggio 1966).

Qualcuno sa come ottenere intorno a questo e ottenere Ext di riconoscere il corretto fuso orario della data analizzata piuttosto che il fuso orario browser locale?

Se questo non è possibile, può Ext essere costretto ad usare GMT piuttosto che cercare di interpretare fusi orari?

È stato utile?

Soluzione

Ho controllato il parsedate attuazione () in ExtJS codice sorgente e la documentazione dei data data nucleo JavaScript , la costruzione Date () utilizzato da ExtJS non supporta informazioni sul fuso orario. JavaScript oggetti Date rappresentano un valore UTC, senza il fuso orario. Durante l'analisi nel codice sorgente ExtJS, il fuso orario è perso mentre l'offset corrispondente in minuti / secondi viene aggiunto alla data.

Ho poi verificato il href="http://docs.sencha.com/ext-js/3-4/source/Date.html#Date-method-getGMTOffset" rel="nofollow"> codice sorgente : costruisce una stringa fuso orario utilizzando la funzione getTimezoneOffset () definita in JavaScript

.

documentazione getTimezoneOffset ( ) :

L'offset fuso orario è la differenza tra ora locale e di Greenwich Time (GMT). Ora legale impedisce questo valore dall'essere costante.

Il fuso orario non è una variabile memorizzata nel data, è un valore che varia a seconda del periodo dell'anno che la data cade.

Sul mio computer, con la localizzazione francese,

new Date(2010,1,20).getTimezoneOffset()
// -60
new Date(2010,9,20).getTimezoneOffset()
// -120

Edit: questo comportamento non è specifico per l'analisi Data in ExtJS, la seguente nota nella documentazione Date.parse () su Mozilla Doc Center è rilevante anche qui:

Si noti che mentre specificatori di fuso orario vengono utilizzati durante la data all'analisi delle stringhe di correttamente interpretano l'argomento, hanno non influenzano il valore restituito, che è sempre il numero di millisecondi tra 1 gennaio 1970 00:00:00 UTC e il punto nel tempo rappresentato dall'argomento.

Altri suggerimenti

Sono un po 'in ritardo, ma in tutte le ExtJS, è possibile passare un valore booleano opzionale per evitare che il "rollover" in JS

http: // docs .sencha.com / ext-js / 4-0 / #! / api / Ext.Date-metodo-parse

I miei due centesimi, perché io non posso davvero impostare tutto il mio tempo alle 12:00 come Tim ha fatto. Ho pubblicato sul forum Sencha

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top