私が引き継いだasp.net-mvc Webサイトがあり、人々が情報と時間を入力するページページがあります(ローカルタイムゾーンを含む)。データベースは開始時刻、終了時刻、およびタイムゾーンを保持しています。選択するリストを取得するコードは次のとおりです。
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 などとしてリストされているかどうかを把握しようとしています。. より良い提案はありますか?たとえば、Web サイトで UTC への変換を行い、データベース内のすべての時刻を正規化する必要がありますか?