У меня есть веб-сайт 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 на веб-сайте и нормализовать все время в базе данных?