zonas zona tipo mundo mexico meridiano husos horarios horarias horaria cual date localization time internationalization

date - tipo - ¿Cómo manejo la fecha y la hora en diferentes zonas horarias?



zona horaria utc (9)

Cuando no tenga tiempo, suponga que el tiempo es el final del negocio en la configuración regional principal de la aplicación, luego traduzca ese momento como lo haría en cualquier otro momento. Una alternativa sería asumir el final del día hábil en hora local y ajustarlo a UTC. Todos los que usen la aplicación necesitarán entender cualquier hipótesis de tiempo predeterminada que hagas cuando no se especifique la hora. La coordinación con la oficina principal puede ser mejor en una gran empresa, mientras que la coordinación a la hora local puede ser mejor en entornos altamente descentralizados donde el contexto local es igualmente importante.

Estoy desarrollando un software internacional que funciona como un software simple de administración de proyectos y estoy enfrentando un problema. Este problema es sobre la fecha / hora y la zona horaria.
Cuando se envía un mensaje de una zona horaria a otra zona horaria, puedo almacenar la hora UTC (GMT) en mi base de datos y luego hacer que se muestre de manera diferente según la zona horaria del usuario. Pero esto no se puede hacer cuando solo trabajo con la fecha.
Si digo que una tarea se debe realizar el 21 de marzo. ¿Debería considerar que esta fecha puede ser 20 o 22 en algunos otros países? ¿Cuáles son sus consejos sobre este problema?


Digamos que un usuario en Nueva York establece una fecha de vencimiento para un proyecto como "en cualquier momento el lunes 26 de enero". Eso significa "en cualquier momento desde las 0600 el lunes 26 de enero hasta las 0600 el martes 27 de enero" en Bruselas y "en cualquier momento desde el 2000 el domingo 25 de enero hasta el 2000 el lunes 26 de enero" en LA

Así que completar la tarea a las 2100 el lunes 26 está bien en Bruselas y Nueva York, pero demasiado tarde en Los Ángeles

Una posible solución no es solo trabajar con la fecha. Si no se especifica la hora, configúrela para 0000 horas o 2400 horas en la fecha especificada en la zona horaria del usuario.

Los usuarios pueden tener que lidiar con fechas / horas extrañas, pero hablar como alguien que solía trabajar internacionalmente, va un poco con el territorio.


La solución más fácil sería simplemente mostrarla como la misma fecha para todos. La fecha límite sería efectivamente la medianoche en la última zona horaria.

De lo contrario, decida cuál debe ser el tiempo predeterminado de la fecha límite en la zona horaria en la que se creó la tarea, por ejemplo, 21 de marzo a las 17:00 EST o 22 de marzo a las 00:00 EST y visualícela en la zona horaria local. La diferencia de zona horaria luego lo empujará al día anterior o al día siguiente para el espectador.


No podrá lograr lo que intenta hacer sin almacenar la hora exacta. Simplemente no tienes suficiente información.


SQL 2008 permite un tipo de datos de fecha que no tiene ningún valor de tiempo asociado. Eso le permite a alguien decir que lo necesito para esta fecha, pero no me importa si es +/- varias horas. Si la fecha seleccionada es 1/1/2009 pero ocurre el 1/2/2009 a las 2AM hora local, es probable que no les importe.

Cuando el usuario necesita algo hecho en una fecha y hora específica, como cierre de operaciones el 1/1/2009, debe almacenarlo en un DateTime como UTC y convertirlo a la hora local del lado del cliente.

Esto eliminará gran parte de la complejidad de indicar cuándo se completa algo, o se completará cerca de un día específico o en un momento específico.


Si tiene una instancia única de un DB, almacenaría todas las fechas en el sello de fecha y hora de su servidor de base de datos. Si está marcando fechas, considere GetDate () en T-SQL o como valor predeterminado de la columna de fecha y hora. Entonces tienes tu punto de referencia único para todos los tiempos. Considere el formato UTC allí.

Luego, todos los clientes que acceden a la fecha hacen su propia conversión en "hora local", lo que puede interpretarse por elementos como: preferencias del usuario, marca de fecha y hora en la computadora del cliente, etc.

Sin saber más, es difícil decir exactamente cuál es la resolución.


Es posible que desee guardar la fecha en a from que tenga en cuenta la zona horaria. Esto te ayudará en tus cálculos. SQL Server 2008 por ejemplo admite un datetimeoffset que hace precisamente esto . Alternativamente, si está utilizando SQL 2005 con un poco de esfuerzo, puede escribir su propio tipo de datos SQL CLR para respaldar esto.


Su solución depende de su aplicación y requisitos.

Primero almacenaría UTC + desplazamiento en sus estructuras de datos, por lo que es fácil de visualizar para cualquier zona horaria.

Lo más probable es que si una tarea o reunión debe realizarse a las 12pm del 21 / marzo en Londres, ocurrirá a las 21:30 el 21 de marzo en Adelaide (+0930), pero ese es un requisito de la aplicación, no un estándar siniestro relacionado con la zona horaria.

Si desea lo último en flexibilidad, agregue una bandera que pueda igualar simultáneamente en cada zona horaria o al mismo tiempo, sin importar dónde se encuentre (escalonado) y muestre el evento en consecuencia.


Si no está almacenando los minutos y segundos, debe suponer que la fecha que se ingresa es la fecha deseada y no ajustes para GMT. Simplemente colóquelo en la base de datos tal como está. Las personas en la costa oeste tendrán que suponer que la fecha de vencimiento es la misma independientemente de dónde se encuentre en el mundo. Si desea ajustar las zonas horarias, tendrá que recopilar más información, como horas, minutos y segundos.