3 月 7 日以降、東南アジア地域の Azure サーバーに、.NET の TimeZoneInfo の動作を変更するパッチが適用されたようです。
ローカル マシンを「(UTC) 協定世界時」に設定し、次のコードを実行すると「UTC」が生成されます。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(TimeZoneInfo.Local.Id);
Console.ReadLine();
}
}
}
Azure インスタンスの 1 つにリモート接続し、この同じアプリケーションを実行すると、次の結果が得られます。
「協定世界時」
.NET ドキュメントによると、これは Id プロパティではなく、StandardName プロパティによって返される値です。この値を TimeZoneInfo.FindSystemTimeZoneById() に渡しますが、「協定世界時」は有効な ID ではない (「UTC」は有効) ため、失敗します。このタイムゾーンは、StandardName プロパティが Id プロパティと一致しない 3 つのうちの 1 つです。
3 月 7 日より前は、Azure インスタンスは常に適切な値の "UTC" を返していました。当面の間、一時的な解決策として「UTC」をハードコーディングしました。
なぜこれがこのように変わったのか、そしてこの状況を処理するための適切な長期的な解決策は何ですか?