我正在使用asp.net mvc,并且正在使用此站点上的方法。

How do I enumerate all time zones in .NET?

所以这就是我在做的。然后,我将结果显示给用户。用户选择他们的时区,我将显示名称保存在数据库中。

但是,我现在正在尝试进行时区转换。

我正在尝试这样做(我不确定这是否是正确的方法)。

  TimeZoneInfo zoneInfo  = TimeZoneInfo.FindSystemTimeZoneById(id);
  var time = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, zoneInfo);


因此,我认为这是对的,它可以获取系统时间和用户时区,并使用此信息将其转换为本地UTC时间。

因此,假设我所做的一切正常(如果不能,请纠正我),我面临的问题是如何获取ID?

我不知道如何找到ID。就像我愿意将ID而不是DisplayName保存在数据库中一样,但是我不知道如何从DisplayName中找出ID。

谢谢

最佳答案

也许在启动时将它们缓存在字典中:

static readonly Dictionary<string, TimeZoneInfo> zones
    = TimeZoneInfo.GetSystemTimeZones().ToDictionary(z => z.DisplayName);


然后以zones[displayName]的方式获取(如果您想安全的话,则通过zones.TryGetValue(displayName, out zone)获取)。

关于c# - 可以找到具有TimeZoneDisplayName的TimeZoneById吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1353277/

10-12 23:20