私はUTC(GMT + 0)タイムスタンプを含むデータベースを持っています。問題は次のとおりです。インディアナ州で発生した請求処理を指します。知っているかもしれないいくつかのようタイムゾーンルールが変更された場合、Javaで歴史的に正確な現地時間にどのようにマップするのですか?
、インディアナ...
- (状態のほとんどはEST一年中た)全ての前に2006年夏時間を観察しませんでした。
- がESTのまま2006年に投票されましたが、他の米国との夏時間の観測を開始します。
- 2007年の規則が改訂されました。このデータベースのタイムスタンプは、政府の課金アクティビティを参照しているため、開始と終了のルールが
を変更するように米国連邦政府はサマータイムを改訂し、歴史的にされている現地時間として報告UTCタイムスタンプを持つことが実際には必要です監査の正確さを維持するために正確です。したがって、インディアナには3つのシナリオがあります。2006年以前のタイムスタンプは2006年から2007年のタイムゾーンルールとは全く異なるタイムゾーンルールを使用し、2007年以降のタイムゾーンルールは全く異なるタイムゾーンルールを使用します。このデータベースには、インディアナ以外のロケールのアクティビティが含まれていることが想像できます。そのため、状況はさらに複雑になります。
JavaカレンダーおよびTimeZone APIには、複数のタイムゾーンルールセットを持つオブジェクトをプログラマが作成できるクラスが含まれていないため、UTCタイムスタンプを歴史的に正確な現地時間に正しくマッピングするためには使用できません。具体的には、適用可能なタイムゾーン規則が変わります。
私はUTCタイムスタンプが一緒に保存することができるように、データベースを更新することができ- ...タイムゾーンのルールを変更してロケールで歴史的に正確な現地時間へのマッピングの問題に対処する方法について考えてきました
ローカルタイムオフセットと夏時間オフセットを使用します。ここで問題となるのは、データベースのサイズが少し大きくなり、既存のデータベースが大きい場合は、すべてのテーブルを更新するには、オフラインのメンテナンスサイクルを延長する必要があります。
データベースは、特定のタイムスタンプに適した特定のタイムゾーンオブジェクトが各タイムスタンプとともに格納されるように更新できます。私はTimeZoneオブジェクトはかなり軽量だと思いますが、これは上記より柔軟ですが、タイムスタンプごとにオブジェクトを永続化する必要があるため、あまり好ましくありません。
関心のあるロケールの歴史的に正確な規則のデータベースから適切なTimeZoneオブジェクトを構築するカスタムAPIを開発することができます。このソリューションは、前の2つのソリューションのストレージ要件の増加を、追加の処理の必要性で置き換えました。表示される必要があるすべてのタイムスタンプは、新しいオブジェクトを作成することを意味するか、少なくともオブジェクトプールから適切なオブジェクトとペアを作成することを意味します。さらに、タイムゾーンデータベースの作成と管理を意味します。 Javaの時刻とカレンダーAPIの制限は、あなたが、例えば、既存のSimpleTimeZoneオブジェクトを照会し、どのような晴天にそれを求めることはできません(それがあるべきよりも、本当に難しいこの問題へのエレガントな解決策を見つける行った
節約ルールは本当に面倒なコードを書かずに従います)。
私はちょうど誰かが前にこのような状況に対処しているかどうか、どのようにそれを処理したか尋ねたいと思います。
私はJavaについて知らないけど、[Olson timezone database](http://www.iana.org/time-zones)を使っていると確信しています([tzdata -java Debianパッケージ](http://packages.debian.org/squeeze/tzdata-java))もしそうなら、あなたはha心配することはありません。 Olsonデータベースはすべての履歴ルールを処理し、正しい現地時間を提供する必要があります。 – Celada
政治家の犯罪を取り除くためには一生懸命働かなければならないのはとても悲しいことです。 – irreputable