[.Net Core] クロスプラットホーム開発の注意点 - TimeZoneInfo
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");