gpt4 book ai didi

c# - 在数据库中存储时区信息的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-02 02:46:53 25 4
gpt4 key购买 nike

我有一个我接管的 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() 返回的完整字符串

这种方法有什么缺陷吗?我有点担心reading here这来自机器本地,就像不同的机器有不同的设置一样。另外,试图弄清楚所有内容是否都列为 UTC 或 GMT 等。 。还有更好的建议吗?例如,我应该在网站上转换为 UTC 并标准化数据库中的所有时间吗?

最佳答案

您应该存储TimeZoneInfo.Id返回的ID 。这就是标识符 - 用于识别时区的字符串。使用显示名称是一个非常糟糕的主意,因为它可能会因文化而异,并且不太可能稳定。

然后您可以使用 TimeZoneInfo.FindSystemTimeZoneById从 ID 检索区域。

诚然,我更喜欢 TZDB 来处理时区,但那是另一回事了:)

关于c# - 在数据库中存储时区信息的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com