6

NodaTime を使い始めたばかりです。私のアプリでは、ユーザーがイベントを作成し、タイム ゾーンを選択します。BCL (Windows) のタイム ゾーン リストを使用するか、TZDB (Olson) のリストを使用するかに関係なく (それらを混在させないでください!)、後でタイム ゾーンを再作成できるように、タイム ゾーンの ID をデータベースに永続化する必要があります。 -意識時間。

タイムゾーン ID がやや恣意的で、ISO 標準ではないように見えることを考えると、今後 GetZoneOrNull を呼び出すときに常にその ID を見つけることに頼ることができますか?

GetZoneOrNull メソッドは、そのような事態に対する防御であると想定しています。つまり、独自の Ids コレクションに存在しない ID が渡された場合です。私の質問は、ID が Ids コレクションから取得された場合、GetZoneOrNull が今後 null を返さないことを信頼できますか?

しかし、ID が履歴から消える可能性がある場合、それに対処するための最善の戦略は何ですか?

4

1 に答える 1

6

明らかに、Windows のタイムゾーンと TZDB を切り替えると、タイムゾーン ID が異なります。Olson タイムゾーン ID は安定しているため、変更しないでください。そうは言っても、過去に変更はありましたが、古い ID はまだ存在し、新しい ID のエイリアスです。すべての「地域/都市」ID は新しいスタイルであり、そのスキームが選択されたため、二度と変更する必要はありません。古い ID は、変更される可能性のあるタイムゾーンの正式な名前に基づいて命名されることがありました。

タイムゾーンの Olson Id を現在のプロジェクトのテーブルに保存しています。

Windows のタイムゾーン ID について話すことはできません。

于 2012-11-09T20:56:21.913 に答える