UTC y zonas horarias con Web Services

lunes 4 de septiembre de 2006

Este post es en respuesta a este caso de Edgar. Desafortunadamente no lo pude poner como comentario en su blog porque Blogger beta me dió este hermoso mensajito al intentarlo:

Así que esta es mi respuesta:

No estoy seguro si esto es más bien un problema de lógica/programación, más que del framework en sí.

Mi primera recomendación cuando tienes apps que varían significativamente en la zona horaria es que tanto el servicio como el cliente hablen en UTC (Coordinated Universal Time). De esa forma te olvidas de plano de conversiones de zona horaria.

El .NET Framework (desde v1.0) trae un soporte bastante robusto para manejar esto en el tipo DateTime--ve los métodos ToUniversalTime() y ToLocalTime().

Ahora si por "problema que ya se resolvió en .NET 2.0" te refieres a los cambios hicieron a la forma en que se serializan los tipos DateTime a XML, entonces échale un ojo a este artículo, que contiene algunos workarounds para tu situación.

En resumen: si usas tiempo local en v1.0 y 1.1 siempre se serializan DateTime con todo y timezone, incluso cuando solo usas la fecha. Y aunque sí hay workarounds--medio feos--para ello, te ahorras muchas más broncas si usas UTC. Esto podría no ser posible de acuerdo a impacto, restricciones de tiempo/presupuesto o de qué tanto control tengas sobre el web service.

En fin, espero te de un norte.

categorías: ,

0 comentarios: