如何解决如何使用 C# 正确查找 America/Los_Angeles 的 TimeZoneInfo
我正在尝试使用 C# 获取 TimeZoneInfo。
我尝试使用 TimeZoneInfo.FindSystemTimeZoneById("America/Los_Angeles");
但失败并出现以下错误
System.TimeZoneNotFoundException: '时区 ID 在本地计算机上找不到“America/Los_Angeles”。
如何使用 C# 为 America/Los_Angeles 正确查找 TimeZoneInfo?
解决方法
我建议使用 TimeZoneConverter 包来获取时区信息。
PM> Install-Package TimeZoneConverter
然后您可以使用以下任一方法获取 TimeZoneInfo
TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("Pacific Standard");
TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("America/Los_Angeles");
,
TimeZoneInfo.FindSystemTimeZoneById
接收在 Windows 注册表中找到的 ID(特别是 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zone),因此它必须是机器上存在的.洛杉矶位于“太平洋标准时区”。
因此,要计算当前的洛杉矶时间,您需要先获取“太平洋标准时间”区域的 TimeZoneInfo
,然后才能获取当前的 UTC 时间和 Add
TimeZoneInfo
的 BaseUtcOffset
以计算洛杉矶的时间。
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
DateTime laTime = DateTime.UtcNow.Add(timeZoneInfo.BaseUtcOffset);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。