TO;DR

  • TimeZone IDはプラットホームにより異なります。
  • TimeZoneConverterパッケージを使いましょう。

問題

TimeZoneInfo.FindSystemTimeZoneById(https://docs.microsoft.com/ja-jp/dotnet/api/system.timezoneinfo.findsystemtimezonebyid?view=netcore-2.2) に渡す引数は、プラットホームにより異なります。

  • macOSやLinux → IANAで決められた文字列
  • Windows → 独自(?)文字列

回避策

TimeZoneConverter https://www.nuget.org/packages/TimeZoneConverter/ パッケージを使います。

var tz = TZConvert.GetTimeZoneInfo("Tokyo Standard Time");

詳細