visual - timezone c#
¿Cuál es la mejor forma de detectar y almacenar la zona horaria en la que se encuentra el cliente de una aplicación web? (2)
Tengo una aplicación web multi-timezone que almacena todos los valores de fecha y hora en UTC en la base de datos, cuando ocurren acciones en el servidor, puedo convertir fácilmente la hora en UTC.
Sin embargo, cuando un cliente ingresa un lapso de tiempo o tiempo, ¿cuál es la mejor manera de detectarlo y almacenarlo?
Actualmente estoy haciendo lo siguiente:
- Obtenga el valor de Date.getTimezoneOffset () (javascript)
- Publique eso en el código del lado del servidor a través de ICallbackEventHandler en la página.
- Almacene ese valor en la sesión
- En cualquier solicitud posterior, calcule el valor de fecha / hora de salida / entrada utilizando la zona horaria del cliente.
Independientemente de la implementación real, esto parece una solución elegante. ¿Alguien tiene un mejor método?
Estaba haciendo algo muy similar, pero ahora creo que prefiero usar javascript para convertir todas las veces a local en el lado del cliente. El servidor dará todos los tiempos en UTC en la página generada, y el javascript la convertirá una vez que se cargue la página.
Esto elimina la confusión en el código del lado del servidor, ya que siempre sé a qué hora es (UTC). En el lado del cliente estoy usando jquery y la función each () para formatear todos los valores de tiempo a la vez. Escribo cada una de las veces como tiempo Unix en un campo oculto para que esto sea fácil de procesar con jquery.
Los únicos problemas que veo con este método es que a) Todavía no tengo una buena rutina de formateo de fecha / hora en JavaScript, yb) si el usuario tiene Javascript desactivado, entonces no funciona.
Puede usar la propiedad "header" del objeto HttpRequest para consultar el encabezado "If-Modified-Since" enviado por el cliente. Este encabezado debe contener una fecha en un formato que incluya la zona horaria del cliente, como esta:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
una simple extracción de subcadenas le dará el código de zona horaria. Sin embargo, me temo que no todos los navegadores son coherentes al enviar ese encabezado, por lo que debe experimentar un poco al respecto.
Saludos, Fabrizio