もともとAzure Functionsで動かしていたアプリをLinux上に持って行った際、下記のようなエラーが発生しました。
エラーが発生した箇所の実装は下記の通り。
結論としては、Windowsでは日本のタイムゾーンとして「Tokyo Standard Time」が定義されているものの、Linux(少なくともUbuntu 18.04では)では下記の項目しか存在しないことにより、未定義エラーが出ていたようです。
そりゃ存在しない以上エラーも吐きます。
「Japan」と記載しておけばいいのでしょうが、それだとWindows環境では動かなくなってしまいます。
解決策を探したところ、MSのブログを発見。
https://blogs.msdn.microsoft.com/dotnet/2018/11/13/cross-platform-time-zones-with-net-core/
こちらではTimeZoneConverterというライブラリを用いる方法を紹介しています。
内部的にWindowsのタイムゾーンとLinuxのタイムゾーンをマッピングさせているようです。
さっそくNuGetで参照し、下記のように実装を修正。
この修正でエラーが発生しなくなりました。