コードでの日付/時刻計算のタイムゾーンの問題で立ち往生しています。同じ上であなたの提案が必要になります。以下はシナリオです。
私のアプリケーションは、hbase db からデータを取得する必要があります。このデータは、hbase のテーブルからの日付検索基準に基づいて選択されます。テーブルには、フィルタリングに使用される日時列があります。
現在、このテーブルにデータを入力する他のアプリケーションは、datetime を GMT タイムゾーン形式で挿入しています (これがそのチームの発言です)。アプリケーションは、EST タイムゾーンのサーバーにデプロイされます。GMTタイムゾーンに変換する必要があるユーザーから入力日付(時間コンポーネントなし)を取得します。しかし、現在起こっていることは、変換を行うと、一部のデータが EST タイムゾーンで選択されていないということです。同じデータがローカルタイムゾーン IST で選択されています。以下のローカル サーバーとリモート サーバーの両方にデプロイされているコードで GMT への変換を行いました。
表にデータが存在する日付: 2013-03-15 01:30:30
ユーザーによるデータ入力: 2013-03-15 (時間要素なし)。特に時間コンポーネントを追加しました。
時間コンポーネントを追加した後の日付: 開始日 - 2013-03-15 00:00:00、終了日 - 2013-03-15 23:59:59。
私は IST タイムゾーン (UTC+5:30) にいます。したがって、GMT に変換された開始日と終了日の両方が
GMT -2013-03-14 18:30:56 に変換された開始日。
GMT に変換された終了日 - 2013-03-15 18:30:56。
ユーザーによって提供された日付 2013-03-15 01:30:30 が上記の範囲に含まれるため、テーブルからのデータはこのタイムゾーンで取得されます。
同じコードが EST(UTC-5:00) にあるリモート サーバーにデプロイされます。
GMT -2013-03-15 05:00:56 に変換された開始日。
GMT に変換された終了日 - 2013-03-16 05:00:56。
ユーザーから提供されたデータ 2013-03-15 01:30:30 がこの範囲に入らないため、データは取得されません。
計算がタイムゾーン間で一貫しているように、このシナリオを処理する方法がわかりません。テスターは、データはタイムゾーン全体で一貫しているべきだと言っているからです。ご覧のとおり、GMT 変換は行われていますが、日付は両方のタイムゾーンのオフセットによってずれており、データが取得されていません。これを処理する方法を教えていただければ、大変助かります。
オンラインで見つかったタイムゾーンの標準コードであり、ほとんどの場合同じであるため、ここにはコードを入れていません。