Conozco la clase System.TimeZone, así como los diversos usos del método DateTime.ToString(). Lo que no he podido encontrar es una forma de convertir un DateTime a una cadena que, además de la información de fecha y hora, contiene la abreviatura de tres letras de Time Zone (de hecho, de forma muy parecida a la información de herramientas de StackOverflow para la visualización del tiempo funciona).¿Cómo se muestra DateTime con una zona horaria abreviada?
Para hacer que un ejemplo sea fácil de seguir para todos, así como para consumir, continuemos con el ejemplo de StackOverflow. Si observa la información sobre herramientas que se muestra en tiempos relativos, se muestra con la fecha completa, el tiempo que incluye segundos en formato de doce horas, una designación AM/PM y luego la abreviatura de Zona horaria de tres letras (en su caso, Coordinado Tiempo Universal). Me doy cuenta de que podría obtener fácilmente GMT o UTC utilizando los métodos integrados, pero lo que realmente quiero es la hora, ya que es localmente — en este caso, en un servidor web.
Si nuestro servidor web ejecuta Windows Server 2k3 y tiene su zona horaria configurada en CST (o, hasta que daylight saving cambie, CDT ¿verdad?), Me gustaría que nuestra aplicación web ASP.NET muestre DateTimes relativa a esa zona horaria, así como el formato para mostrar un "CST" en el extremo. Me doy cuenta de que podría codificar fácilmente esto, pero en aras de la solidez, realmente preferiría una solución basada en el servidor que ejecuta la configuración del entorno del sistema operativo del código.
En este momento, tengo todo, pero la abreviatura de zona horaria usando el siguiente código:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
que muestra:
10/07/2008 03:40:31 PM
Todos Quiero (y que no es mucho, prometen!) es para que diga:
10/07/2008 03:40:31 PM CDT
Puedo usar System.TimeZone.CurrentTimeZone y usarlo para mostrar correctamente "Central Daylight Time" pero ... eso es demasiado largo por motivos de brevedad. ¿Estoy atascado escribiendo una rutina de manipulación de cadenas para quitar el espacio en blanco y las letras que no sean mayúsculas? Mientras que eso podría funcionar, eso parece increíblemente piratearme ...
Googling y mirando por aquí no produjo nada aplicable a mi pregunta específica.
Este enfoque tiene algunos defectos. Por ejemplo, en Arizona, donde usan Mountain Standard Time y no observan el horario de verano, .NET tiene un DaylightName y un StandardName de "US Mountain Standard Time" que mostrará "UMST" con su método. Esperaría ver "MST" en su lugar (tanto durante el verano como en invierno). Lamentablemente, el .NET Framework parece quedarse corto aquí, así que he recurrido a una tabla de búsqueda estática. – codemonkey
Esto no funcionará para tantas zonas horarias, p. ** ACT ** _Acre Time_ (UTC -5) – Tanmay