電子書籍の厳選無料作品が豊富!

お世話になります。
カレンダークラスを使用してDBへ格納するためのシリアル値を取得しようとしています。
やりたいことは任意の年月日(時分秒は無し)をPostgreSqlのDATEフィールドに日付として格納させ、レコード取得した結果の該当DATEフィールドと先ほどの任意の年月日を比較させたいのです。予想される結果は「一致」なのですがこれが不一致となってしまいます。

例えばjava.util.CalenderクラスのgetTime()を使用して取得されるシリアル値は1174611700734ですが、DBへ格納された後にレコードから取得されるデータは1174575600000となっていて比較しても不一致となってしまいます。
java.util.CalenderのgetTime()結果は実行するたびに値が異なるようで、下3桁が上記例のように"734"だったり"015"だったりします。
getTime()の結果で返されるシリアル値の下3桁を"000"とする方法はあるのでしょうか?

java.util.Calendar xcal = java.util.Calendar.getInstance();
xcal.set(2007, 3 - 1, 23, 0, 0, 0);
java.util.Date xday = xcal.getTime();

#xdayには"1174575600015"と格納されています。
#xdayをそのままPostgreSqlへデータ投入すると、日付のみ格納され次回取得時には"1174575600000"となります。

A 回答 (1件)

xcal.set(Calendar.MILLISECOND, 0);


でミリ秒を0にあわせてみては?
DATEがミリ秒に対応していないんじゃないんでしょうか?
詳しくは分かりませんが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
試行錯誤しているうちにclearメソッドの存在に気づき、xcal.set(2007, 3 - 1, 23, 0, 0, 0);の前でxcal.clear();としたところ下3桁が"000"となりました。
アドバイスいただいた方法も試してみましたが結果OKでした。

お礼日時:2007/01/26 13:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!