私は.NET Framework 2.0への.NET Framework 4.5アプリケーションの移植に取り組んでおり、Macでいくつかのテストを開始しました。プラットフォームに依存しない方法でTimeZoneInfoを取得するにはどうすればよいですか?
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
をそれがMac上で、次の例外がスローされます:私はWindows上で.NETのコア2.0でこのコードを実行すると、それが正常に動作し、いくつかのチャンスをうかがった後
System.TimeZoneNotFoundException: The time zone ID 'Pacific Standard Time' was not found on the local computer. ---> System.IO.FileNotFoundException: Could not find file '/usr/share/zoneinfo/Pacific Standard Time'.
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.File.ReadAllBytes(String path)
at System.TimeZoneInfo.TryGetTimeZoneFromLocalMachine(String id, TimeZoneInfo& value, Exception& e)
--- End of inner exception stack trace ---
at System.TimeZoneInfo.FindSystemTimeZoneById(String id)
を、使用しているようですタイムゾーンID "America/Los_Angeles"
はMacで問題を解決します。
私はこのプラットフォームにとらわれないために何をすべきかと思います。 "Pacific Standard Time"
を探して、キャッチブロックで"America/Los Angeles"
を見つけようとする必要がありますか?それは不器用だと思われます。もし別のプラットフォームにもう一つの文字列があればどうでしょうか?私は欲しいTimeZoneInfoを調べる良い方法はありますか?