Estoy trabajando en una aplicación GWT donde tengo que apoyar a la situación siguiente:

El servidor se encuentra en la zona horaria de Un

El navegador del cliente se establece la zona horaria B

La aplicación GWT está configurado para mostrar la fecha/hora en la zona horaria C

Desde GWT no admite el Calendario y el soporte nativo de tiempo
zonas en javascript no existe, no puedo pensar en un agradable y limpio
la solución a este problema.

Han hecho algo similar o sabe de alguna buena
utils podría utilizar?

Gracias!

  • ¿Cómo Se puede manejar mediante el uso de una zona horaria distinta de GWT está utilizando?

6 Comentarios

  1. 25

    En mi experiencia, las siguientes mejores prácticas reduce significativamente la complejidad y la confusión cuando se trata con las fechas y las zonas horarias en gwt:

    1. Siempre de funcionamiento/almacenamiento de fechas dentro de la aplicación, el tratamiento de todas las fechas de milisegundos transcurridos desde la época en la zona horaria GMT. Se puede almacenar como cadena o int, no realmente hacer una diferencia.
    2. Cuando la visualización de la fecha para el usuario final, el formato de la fecha a través de las correspondientes a la zona horaria.

    Para su caso, cuando se crea una fecha en el Servidor (en la zona horaria A) convertir a milisegundos transcurridos desde la época en la GMT antes de enviarlo al Cliente. En el cliente, el uso de DateTimeFormat (o escribir su propia fecha de formateador util) para convertirlo en la zona horaria B o zona horaria C, según corresponda.

    • Echaba de menos la sección sobre el manejo de zonas horarias en el DateTimeFormat java doc. Parece que nos ofrece exactamente el tipo de fuctionality necesito! Yo lo uso en combinación con el enfoque que proponemos. Gracias!
  2. 6

    No se puede cambiar el GWT la zona horaria, por lo tanto, todos java.util.La fecha es el navegador de zona horaria. Usted tendrá que manejar en la actual configuración de zona horaria manualmente.

    Veo 3 opciones:

    1. De gestionar la conversión de zona horaria a ti mismo.

    2. Reemplaza el serializador/deserializer de java.util.Fecha como en este post. Y tal vez usando una costumbre java.util.Fecha implemtation, que anula la getTimezoneOffset(). Este enfoque requiere la recompilación del GWT API!.

    3. De poner en marcha su propia Fecha, ya sea mediante la ampliación de java.util.Fecha (como en la opción 2) o envolver con algunos de zona horaria objeto. En esta opción CustomFieldSerializer del todavía puede ser útil, pero no hay ninguna necesidad de volver a compilar el GWT API.

    Yo preferiría la opción 3. Al menos hasta que GWT RPC tal vez algún día servirá de apoyo para anular el CustomFieldSerializer del


    Útil de fecha/hora formato de sugerencias.

    • un java.util.Fecha objeto no tiene noción de timzone.
  3. 3

    Dave Paroulek la respuesta es el enfoque correcto. Si desea ver un ejemplo de esto, hemos creado aparatos que funcionan independientemente de la zona Horaria y el proceso de los valores en el lado del servidor donde tenemos toda la información de zona Horaria necesitamos.

    UTCDateBox – Envoltura alrededor de la GWT DateBox y siempre elige la fecha a medianoche GMT y representa el valor como de Largo en lugar de una Fecha.

    UTCTimeBox – Nuevo widget que siempre elige un tiempo como millis desde la medianoche, independientemente de la zona horaria, también se representa como Mucho.

    UTCDateTimeUtils – Código del lado del servidor que se divide una Fecha en 2 valores de Largo apropiado para UTCDateBox y UTCTimeBox en una determinada zona y las combina de nuevo en una Fecha en una determinada Zona.

    Aquí es un ejemplo de la fecha en que el tiempo de controles que se utilizan juntos.

    Artículo del Blog describiendo su aplicación.

    Estos widgets están disponibles en GitHub.

    • lástima, todos los enlaces rotos ahora que googlecode es hacia abajo.
    • He actualizado los enlaces a punto para el proyecto que ahora se encuentra en GitHub.
  4. 2

    Estoy asumiendo que usted está utilizando llamadas RPC para servidor-cliente para la comunicación. También suponiendo que no se preocupan por la zona horaria B, y usted sabe lo que la zona horaria C está en el servidor.

    Usted tiene un par de opciones aquí:

    • Calcular la fecha deseada en el servidor (no Java límites en lo que puede hacer) y enviarlo en una Cadena que se mostrará en el cliente, de modo que usted no tiene que hacer más transformaciones en el cliente.

    o:

    • Calcular el desplazamiento entre la zona horaria de a y C en el servidor, se aplican a todos los objetos de Fecha se pasa para el cliente y sólo su visualización en el cliente.

    si por alguna razón ninguno de estos eran válidas para usted

    • Calcular el desplazamiento, enviar al cliente y aplicarlo a cualquier Fecha que usted recibe desde el servidor mediante la transformación de la ms, añadiendo el desplazamiento y, a continuación, crear un objeto Date de nuevo.

Dejar respuesta

Please enter your comment!
Please enter your name here