我正在使用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/