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