Pandora Pocket

IT系と日常系の備忘録。三日坊主。

もともと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で参照し、下記のように実装を修正。

この修正でエラーが発生しなくなりました。