小编Bro*_*ock的帖子

Azure现在为TimeZoneInfo.Local.Id而不是"UTC"返回"协调世界时"的无效值?为什么?

从3月7日开始,东南亚地区的Azure服务器应用了一个补丁,改变了.NET中TimeZoneInfo的行为.

将我的本地计算机设置为"(UTC)协调世界时",然后运行以下代码产生"UTC":

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(TimeZoneInfo.Local.Id);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

远程登录到我们的一个Azure实例并运行同一个应用程序会产生以下结果:

"协调世界时"

根据.NET文档,这是StandardName属性应返回的值,而不是Id属性.我们将此值传递给TimeZoneInfo.FindSystemTimeZoneById(),并且由于"Coordinated Universal Time"不是有效的Id("UTC"),它会失败.此时区是其中StandardName属性与Id属性不匹配的3个时区之一.

在3月7日之前,Azure实例始终返回正确的值"UTC".我们暂时硬编码"UTC"作为权宜之计解决方案.

有没有人知道为什么这会改变这种方式,处理这种情况的适当的长期解决方案是什么?

.net timezone azure

15
推荐指数
1
解决办法
1470
查看次数

标签 统计

.net ×1

azure ×1

timezone ×1