habría dicho que se debe utilizar para el cálculo de UTC períodos de tiempo, para que evitar problemas de horario de verano y luego usar LocalTime por sólo pantalla.
DateTime.ToLocalTime para UTC, cualquiera que sea la zona horaria local, y luego DateTime.ToUniversalTime para convertir la hora local a UTC.
Edición después de 1 comentario
lo tomo entonces que lo que busca es mostrar una zona horaria diferente a la del servidor?
Si está utilizando páginas web para acceder a su servidor, utilice HttpRequest.UserLanguages para ayudarlo a crear un objeto CultureInfo y usarlo para analizar su objeto DateTime. Busque aquí una explicación completa: Microsoft link on displaying local user time for web pages.
Si está utilizando una arquitectura de cliente-servidor, si la llamada de LocalTime está en el lado del cliente, mostrará LocalTime para el cliente. Luego lo convierte a UTC para enviar de vuelta a su servidor.
De cualquier forma, su servidor no necesita saber dónde está el cliente, de modo que si tiene varios clientes en múltiples zonas horarias, todos los cálculos coincidirán. También le permitirá mostrar los horarios en cualquier zona horaria que desee mediante el uso de diferentes objetos de Cultura.
Editar 2 copiado mi segundo comentario
Usted puede obtener los datos de tiempo en formato GMT desde el servidor. Luego puede convertirlo usando DateTime.ToLocalTime o DateTime.ToUniversalTime como se solicitó. Si también incluye fechas y necesita lidiar con los formatos MM/dd/aaaa y dd/MM/aaaa de los Estados Unidos, puede usar la clase CultureInfo para analizar el valor de DateTime en consecuencia. Suena como más trabajo de lo que tiene en este momento, pero significaría que si mueve su servidor nuevamente, entonces no necesita recodificar el manejo de DateTime.
Un nuevo punto de
Otro punto a tener en cuenta es la sincronización de reloj entre el servidor y los clientes utilizando NTP (Network Time Protocol) o SNTP (Simple Network Time Protocol) si es lo suficientemente precisa. No sé qué sistema operativo está utilizando, pero los servicios horarios de Windows Server lo utilizan para sincronizar redes.
Hola Jon, gracias por tu respuesta. ¿Qué sugieres como la mejor solución de estos 2? ¿Debería crear una zona horaria personalizada o usar TimeZoneInfo.FindSystemTimeZoneById ("Eastern Standard Time")? Considering que se encargará del horario de verano. ¿Y cómo me ocupo de este problema en los procedimientos almacenados que usan el método getdate() y toman el tiempo IST? – Shetty
No sé acerca de los procedimientos almacenados, para ser honesto, si es posible, pase UTC en ellos y hágales comprender UTC. En cuanto a si debe usar un huso horario personalizado de Eastern Standard Time, depende de si desea un huso horario que * siempre * esté 4 horas atrás de UTC, o uno que coincida con el horario estándar del este. Originalmente declaró que necesitaba usar EDT "para todos los propósitos": le sugiero que compruebe si realmente * necesita EDT o si necesita Eastern Standard Time. –
Ok Jon. Se me solicitó utilizar el horario de la ciudad de * Boston * como hora estándar para todos los fines del tiempo, lo que corresponde a EDT. No era muy consciente del ahorro de luz diurna. Quería que mi aplicación tomara esta vez aunque se ejecute en el servidor IST. Anteriormente estaba en un servidor diferente que se estaba ejecutando en la zona horaria EDT y no tuve tales problemas. – Shetty