zona usar tipo net horaria fecha dato asp.net sql sql-server timezone

asp.net - tipo - usar datetime c#



¿Dónde puedo obtener una tabla simple de zonas horarias para usar en el servidor SQL? (5)

la lista de todas las zonas horarias está aquí:

select * from sys.time_zone_info

¡Disfrutar!

Solo necesito crear una tabla SQL de zonas horarias: en este momento, mi única necesidad es completar una lista desplegable en un formulario en línea. Estoy visualizando algo simple con columnas para código ISO, nombre, compensación UTC y tal vez una lista de ciudades representativas. Pensé que podría encontrar fácilmente algo en línea para copiar y pegar, pero no he podido encontrar nada.

Fui dirigido por esta pregunta a la base de datos tz , que está en formato binario y parece exagerado para lo que necesito. Alternativamente, podría juntar esto de sitios como TimeAndDate.com , pero eso parece ser más trabajo de lo que debería ser necesario.

¿O estoy haciendo esto de la manera incorrecta? Por ejemplo, ¿debería obtener esta información del sistema operativo del servidor?


¿Estás en .NET 3.5? Puede obtener fácilmente una lista de zonas horarias en .NET 3.5 y luego almacenar esa información (o al menos lo que sea que necesite) en su base de datos de SQL Server.

Podría iterar en todas las zonas horarias disponibles y conocidas de .NET 3.5 y almacenar la información relevante en una tabla de SQL Server:

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); foreach (TimeZoneInfo timeZone in timeZones) { // store whatever you need to store to a SQL Server table }

Bagazo




Llevé la respuesta de marc_s un paso más allá: aquí está el código para crear una tabla simple de zona horaria y un código .net que genera las inserciones para cada registro UTC:

--TSQL TO CREATE THE TABLE CREATE TABLE [dbo].[TimeZones] ( [TimeZoneID] INT IDENTITY (1, 1) NOT NULL, [DisplayName] VARCHAR(100) NOT NULL, [StandardName] VARCHAR (100) NOT NULL, [HasDST] BIT NOT NULL, [UTCOffset] INT NOT NULL CONSTRAINT [PK_TimeZones] PRIMARY KEY CLUSTERED ([TimeZoneID] ASC) ); GO

Para generar las instrucciones de inserción, creé un proyecto web .net predeterminado usando Visual Studio y en la vista pegué esto, ejecuté el proyecto y luego copié el código renderizado (recuerde copiarlo de la fuente de vista, no directamente de la página html) :

System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); foreach (TimeZoneInfo timeZone in timeZones) { Response.Write("INSERT INTO TimeZones (DisplayName, StandardName, HasDST, UTCOffset) VALUES (''" + timeZone.DisplayName.Replace("''", "''''") + "'', ''" + timeZone.StandardName.Replace("''", "''''") + "'', ''" + timeZone.SupportsDaylightSavingTime + "'', ''" + timeZone.BaseUtcOffset + "'')" + Environment.NewLine); }

Espero que esto ayude