2011-05-23 21 views

Respuesta

14

Desafortunadamente no se puede obtener la zona horaria del usuario de su solicitud, ya que el cliente no envía los datos. La configuración regional en el objeto de solicitud se basa en el encabezado Accept-Language del usuario. ¿Cuál es la zona horaria correcta para "Inglés"? otros

dos enfoques posibles:

  • Uso GeoIP sobre IP del cliente para tener una puñalada a su ubicación, y mirar hacia arriba (de tz) una estrecha zona horaria
  • Uso del lado del cliente Javascript para calcular su offset de UTC (restar UTC del tiempo local), luego busca zonas horarias que coincidan con ese desplazamiento (esto no será muy detallado ya que muchas zonas horarias son, por ejemplo, +11 horas. Puede combinar con las anteriores).

Sin embargo, esta es la razón por la que la mayoría de los sitios solicitarán la zona horaria del usuario o mostrarán las fechas en un formato relativo (por ejemplo, hace 5 horas).

3

Proporcione un cuadro desplegable a su cliente donde pueda ingresar a su zona horaria correcta. Y usa el que determinaste de la configuración regional de forma predeterminada.


De todos modos: El W3C tiene esta pregunta en su W3C Web Internacionalización frecuentes: Is it a good idea to use the HTTP Accept-Language header to determine the locale of the user?

+0

+1 para preguntas frecuentes sobre W3C –

+1

** Las zonas horarias y los idiomas son independientes. ** Rusia tiene 9 zonas horarias, ¿cuál debe usarse para 'ru_RU' ?. Las personas que viven en Japón con su ubicación geográfica configurada en 'en_US' esperan ver páginas web en inglés estadounidense y hora en JST – user454322

+0

@ user454322: esta es la razón por la cual solo es el valor predeterminado y el usuario puede cambiarlas. Por otro lado, funcionará correctamente para muchos lugares. – Ralph

12

No se puede obtener de la HttpServletRequest. La información no está allí.

En JavaScript, sin embargo, puede obtener el desplazamiento zona horaria de la siguiente manera:

var offset = new Date().getTimezoneOffset(); 
// ... 

Se puede utilizar para enviar de vuelta al servidor como parámetro (Ajax) o para aplicar cambios en el HTML representado. Sin embargo, no dependería estrictamente de esto. Al menos debe ser configurable por el usuario final.

Cuestiones relacionadas