2009-04-20 9 views

risposta

10

Javascript:

var today = new Date(); 

alert(today.getTimezoneOffset()); 

Questo darà la Offset (GMT-X), ma non il nome fuso orario attuale. Tenere presente che lo stesso offset GMT può corrispondere a più fusi orari e tenere conto anche dei risparmi diurni. Tuttavia, questo è probabilmente il punto di partenza più facile, a meno che gli utenti scelgano il loro fuso orario da un menu a discesa.

+1

L'unica cosa che vorrei notare è che 'getTimezoneOffset()' sembra restituire il tempo impiegato da GMT per compensare il fuso orario dell'utente, e non viceversa. , ad esempio nel Nord America Eastern Standard Time, '(new Date()). GetTimezoneOffset()/60' restituisce' 5', quando EST è effettivamente uguale a GMT-05: 00, non GMT + 05: 00. – gabriel

1

È possibile utilizzare JavaScript per determinare in modo affidabile il più o meno il fuso orario. HTTP, a mia conoscenza, non fornisce alcun mezzo per determinare il fuso orario del client sul server.

1

utilizzare JavaScript:

<input type="hidden" id="visitorTZ" name="visitorTZ" /> 
<script type="text/javascript"> 
    d = new Date(); 
    document.getElementById('visitorTZ').value = d.getTimezoneOffset()/60; 
</script> 
2

Si potrebbe provare a rilevare un paese utenti associando il loro indirizzo IP ad una serie di liste. Ci sono diversi modi per ottenere questo, ma il meglio è usando this API.

Un esempio di utilizzo potrebbe essere: http://nl.ae/iptocapi.php?type=1&ip=00.00.00.00. Ciò restituirà il codice di paese di quell'indirizzo IP. Quindi è abbastanza facile abbinare il codice del paese con il fuso orario.

Una volta trovato il fuso orario in questo modo, è possibile utilizzarlo come valore predefinito in una casella a discesa.

+4

Non funzionerà. * Molti * paesi comprendono più di un fuso orario. – Turtle

+0

In retrospettiva, non è stata una buona idea. – Sam152