¿Cuál es la mejor manera de almacenar información de la zona horaria en mi base de datos?

Tengo un sitio web asp.net-mvc que asumí y hay una página donde las personas ingresan información y horarios (incluida la zona horaria local). La base de datos persiste una hora de inicio, una hora de finalización y una zona horaria, ya que me parece un poco inestable. Aquí está el código para obtener la lista para elegir:

  static private IEnumerable<SelectListItem> GetTimeZones(string selected)
    {
        var timeZoneNames = TimeZoneInfo.GetSystemTimeZones()
            .Where(tz => tz.DisplayName.Contains("London")
                         || tz.DisplayName.Contains("Hong Kong")
                         || tz.DisplayName.Contains("Mumbai")
                         || tz.DisplayName.Contains("Eastern Time"))
            .ConvertAll(tz => tz.DisplayName).ToList();

        var items = new List<SelectListItem>();
        foreach (var item in timeZoneNames)
        {
            var slItem = new SelectListItem();
            slItem.Text = item;
            slItem.Value = item;
            slItem.Selected = item == selected;
            items.Add(slItem);
        }

        return items;
    }

Así que es simplemente almacenar la cadena completa que se devuelve desde TimeZoneInfo.GetSystemTimeZones ()

¿Hay algún defecto con este enfoque? Estoy un poco preocupadoleyendo aqui que esto proviene localmente de la máquina como qué sucede si las diferentes máquinas tienen configuraciones diferentes. También, tratando de averiguar si todo está listado como UTC o GMT, etc. . ¿Alguna sugerencia mejor? Por ejemplo, ¿debo hacer la conversión a UTC en el sitio web y normalizar todos los tiempos en la base de datos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta