2009-03-23 6 views
5

Vorrei poter visualizzare l'ora in base al fuso orario corrente dell'utente. Memorizzerò i tempi in formato UTC nel mio database, ma desidero normalizzarli al fuso orario del cliente. Finora l'opzione che sembra più praticabile è quella di catturare il tempo dei client e quindi determinare la differenza tra quello e l'attuale UTC e usare quel delta per normalizzare i tempi durante il rendering. Vorrei sapere se ci sono altre opzioni semplici disponibili per rilevare e normalizzare un tempo UTC a quello della macchina del cliente richiedente.Tempo client ASP.NET

+0

Come fai a sapere che il cliente ha impostato correttamente il proprio orario? Non puoi vincere. –

+0

Ho pensato che ... ma lo considererò una vittoria se basterà basarmi sul loro tempo (giusto o sbagliato) :). – JPrescottSanders

risposta

8

Vorrei utilizzare javascript dateObject.getTimezoneOffset(). Anche se il loro tempo non è impostato in modo accurato, si spera che hanno impostato il loro fuso orario:

http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp

È possibile utilizzare questo valore per calcolare un offset tra l'ora del server e l'ora del cliente. (come Jason ha sottolineato utilmente in un commento qui sotto)

+0

La tua soluzione è giusta. Ho dovuto risolvere questo problema per la nostra app web circa 6 mesi fa e sono giunto alla stessa conclusione: utilizzare l'ora del server corretta dal fuso orario del client. –

2

Oltre a, o invece di utilizzare getTimezoneOffset, dovresti considerare di consentire all'utente di specificare il fuso orario preferito nel loro profilo. Ad esempio, un utente potrebbe visitare in un fuso orario, ma potrebbe preferire vedere l'ora visualizzata nel suo fuso orario locale.

Inoltre, se fosse semplice come chiamare una funzione JavaScript, i siti non dovrebbero mai chiedere il fuso orario.

0

Un approccio molto migliore è quello di memorizzare per utente il fuso orario esatto in cui si trova l'utente (e facoltativamente) consentire loro di selezionare se osservano l'ora legale (se applicabile al loro fuso orario.) Ovviamente , se necessario, inserisci automaticamente le informazioni sull'ora legale (in base al fuso orario).

Dovresti rendere questa parte della registrazione o possibilmente nelle loro "opzioni".

Problemi correlati