intra-mart Accel Platform TERASOLUNA Server Framework for Java (5.x) プログラミングガイド 第17版 2022-12-01

タイムゾーン

概要

タイムゾーン対応とは?

タイムゾーン対応とは、世界中で日時データを比較、変換して使えるようにするために、タイムゾーンを適切に変換する仕組みです。
この中には、システムが自動的に夏時間を認識して、日時データを変換する処理も含まれます。
ユーザが自分に合ったタイムゾーンで日時データを参照するためには、タイムゾーンをユーザごとに設定できる必要があります。
各ユーザの持つ日時データのタイムゾーンがバラバラでは、情報を有効に活用できません。
そのため、システム側では、統一のタイムゾーンによって変換された日時データを保管するようにします。
../../../../_images/timezone_guide.png

intra-mart Accel Platform のタイムゾーン対応

intra-mart Accel Platform におけるタイムゾーン対応の構成要素は、以下の5つです。
  • タイムゾーンの定義
intra-mart Accel Platform で利用するタイムゾーンを定義しています。
  • 日時データを統一のタイムゾーンで変換して保存する
日時データは、統一されたタイムゾーンで変換して DB に保存します。
  • タイムゾーン解決
ユーザは、使用したいタイムゾーンを intra-mart Accel Platform に登録できます。
登録しない場合、自動的に解決されたタイムゾーンが適用されます。
タイムゾーンの解決順序については、定義済みアクセスコンテキスト を参照してください。
  • 日時データをユーザのタイムゾーンで変換する
日時データを画面に表示する場合、ユーザのタイムゾーンで変換されている必要があります。
ユーザのタイムゾーンに変換する方法については、ユーザのタイムゾーン、日付と時刻の形式を利用する を参照してください。
  • 夏時間対応

タイムゾーンの定義

初期状態のタイムゾーンの定義

intra-mart Accel Platform が初期状態で定義しているタイムゾーンは、以下を参照してください。
  • タイムゾーンマスタファイル
intra-mart Accel Platform で定義されているタイムゾーンは、「タイムゾーンマスタファイル」という XML に記述されています。
初期状態のシステム・デフォルト・タイムゾーンは、JDK のタイムゾーンです。
  • 設定ファイル

    %CONTEXT_PATH%/WEB-INF/conf/time-zone-config/im-time-zone-config.xml
    

日時データを統一のタイムゾーンで変換して保存する

システム要件

システム側で、日時データを同じタイムゾーンのデータとして処理するために、intra-mart Accel Platform の稼働環境には以下の制約があります。
  • 日時データを保存する DB データ型には TIMESTAMP 型を使用する
SQL Server では datetime 、または、 datetime2 を使用します。

注意

intra-mart Accel Platform では、タイムゾーン変換した際の日時データの整合性を保証するために、日時データを格納する DB カラムは TIMESTAMP 型を推奨しています。
タイムゾーン付き TIMESTAMP 型は、タイムゾーン変換が DB の仕様に依存しているため、 intra-mart Accel Platform 側で日時データの整合性を保証できませんので、タイムゾーン付き TIMESTAMP 型を使用しないでください。
  • 日時データは、システム・デフォルトのタイムゾーンで変換して保存する
システム・デフォルトのタイムゾーンは、 JDK のタイムゾーンと同じです。
  • 分散環境では全ての Java VM のタイムゾーンを統一する
  • Java VM のタイムゾーンは運用開始後に変更しない

夏時間

夏時間とは?

夏の間、太陽の出ている時間帯を有効に利用する目的で、現行の時刻に一定時間を加えたタイムゾーンを採用する制度、またはその加えられた時刻のことを意味します。
その地域の政治的な事情に依存しており、実施期間や調整時間は一定ではありません。また、実施するかどうかさえ不確定な場合があります。

intra-mart Accel Platform の夏時間対応

intra-mart Accel Platform では、Java の提供している夏時間情報を利用しており、該当するタイムゾーンには、自動的に夏時間が適用されます。