Как лучше всего хранить информацию о часовом поясе в моей БД?

У меня есть веб-сайт asp.net -mvc, который я взял на себя, и есть страница, на которой люди вводят информацию и время (, включая местный часовой пояс ). База данных сохраняет время начала, время окончания и часовой пояс, так как мне это кажется немного ненадежным. вот код для получения списка на выбор:

  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;
    }

Таким образом, он просто сохраняет полную строку, возвращаемую из TimeZoneInfo.GetSystemTimeZones ()

. Есть ли недостатки в этом подходе? Я немного обеспокоен , читая здесь , что это происходит локально с машины, как если разные машины имеют разные настройки. Кроме того, пытаясь выяснить, все ли указано как UTC или GMT и т. Д.. Любые лучшие предложения? Например, должен ли я сделать преобразование в UTC на веб-сайте и нормализовать все время в базе данных?

18
задан leora 20 July 2012 в 13:37
поделиться