そのため、データ ソースとして dbUnit で使用している XML ファイルがあり、その中にいくつかの日付が含まれています。ファイルの日付は「2010-02-04」のようになっていますが、ロードされてテストで印刷または比較するためにアクセスすると、日付は「2010-02-03 23:00」と見なされます。
これは EDT/EST に関係していると推測していますが、dbUnit (または休止状態) に正しいタイムゾーンを使用させる方法がわかりません。
dbUnit と日付の経験がある人はいますか?
ありがとう、ピーター
編集
わかりました、何らかの理由で、正しいEDTとして日付を読み取り、それをESTとして保存していますが、これは技術的には正しくありません(ここではEDTです)が、私のコンピューターでは正しいですESTだそうです。この変換により、日付が 1 時間「失われます」。Java が私たちが EST であると考える理由がわかりません (Windows XP は私たちがそうではないことを知っています)、そして dbUnit が日付を EDT にすべきだと考える理由が二重にわかりません。これはかなり紛らわしいです。
EDIT それは問題ではないので、Hibernate XMLを取り出しました。1. dbUnit はソース XML から日付を文字列として読み取り、それを java.sql.Date に変換します。本質的に、これらは時間/分/秒を保存しませんが、ミリ秒を見ると、EDT では真夜中ですが、UTC では午前 4 時であることを示すために、明らかに 4 時間分調整されています。また、これは、「アメリカ/ニューヨーク」または同等のラベルが付けられたタイムゾーンを持つカレンダーによって支えられています。正確には思い出せません。2. この日付を印刷するたびに、EST であると認識している私のシステムは、UTC の午前 4 時を前日の午後 11 時に再変換します。3.例としてテスト用に自分で日付を作成するときはいつでも、それとUTCの違いを作るために5時間分のミリ秒。明らかに、これらは異なる「日付」であり、失敗します。
本当の問題は 2 つあると思います: 1. コンソールが EST だと思うのはなぜですか? 私の知る限り、Windows XP の設定は正しいです。Java 1.4 に誤った TZ を取得する問題があったことは理解していますが、これは修正されており、(おそらく) 1.6 を実行していると思います。2. 同じ JVM 内にある dbUnit が適切なファンシー TZ を使用するのはなぜですか。
日付を一緒に使用するのをやめることもできると思いますが、必ずしもその余裕があるわけではありません。