- - PR -
Calendar.getTime()メソッドによる値の取得
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-06 19:15
いつもお世話になっています。
腑におちない事項があるので質問させてください。 OS:Windows2000、開発環境:JDK1.4.2です。 「DB上のある項目について、前月1日以降の値を取得する」 仕様を実装するために、下記のコードを用いて 前月を取得しようと試みました。 内部のしきたりで、PreparedStatementに日時を渡す時は java.util.Dateを引数にした共通メソッドを使用するので、 最後にjava.util.Date型への変換を試みました。 (日・時分秒のクリアをしていませんが目をつぶってください) GregorianCalendar lastMCalendar = new GregorianCalendar(); lastMCalendar.add(GregorianCalendar.MONTH, -1); // この時点でEclipseによるデバッグ機能にて // lastMCalendarの値を見ると、前月になっている Date lastMDate = lastMCalendar.getTime(); このとき、lastMDateに現在日付が入ってくるのですが、何故なのでしょうか? Calendar.getTime()メソッドは、「当該クラスの時刻を取得する」と 読み取りましたが誤りでしょうか? [ メッセージ編集済み 編集者: ペンギン 編集日時 2006-01-06 19:31 ] | ||||
|
投稿日時: 2006-01-07 08:00
今の時間が、「2006/01/10 18:00」と仮定して、 「現在時刻」というものを「18:00」と考えると、 「2006」や「01」や「10」等の年月日が取得出来るのはなんでだろ? という事と思いますがよろしいですか? それは、「現在時刻」の解釈の違いかと。 現在時刻は?と聞かれたら「2006/01/10 18:00」です、 と考えれば納得出来る話とおもいます。 | ||||
|
投稿日時: 2006-01-07 08:58
「lastMCalendarの値を見ると、前月になっている」のに、 「現在の日付」が返ってくるのが、疑問なのでは...? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-09 12:36
PCに入っていた全てのJREで取得できるか確認してみましたが、
先月の日付がlastMDateに取得できてましたよ。 確認したJREの一覧
以下は、検証コードです。
| ||||
|
投稿日時: 2006-01-09 14:40
Eclipseのデバッガで追っている時にたまに表示が間違っていたことが あったような気がします(たぶん勘違いじゃないと思う・・・?)。 でもなぁ。Date lastMDateで宣言している所で間違うのはないかなぁ。 | ||||
|
投稿日時: 2006-01-10 19:17
みなさま、お付き合いいただきましてありがとうございます。
結論から申し上げれば、「今日実行したら当該クラスの時刻を取れました」。 お騒がせしてすみませんでした(でも腑に落ちないなぁ…)。 ちなみにこの疑問が発生した仕事に絡んでもう一つ疑問が出たのですが、 「時分秒をクリアするためにはどれだけのフィールドに対して clear(int)メソッドを実行する必要があるのでしょうか?」 AM_PM/HOUR/MINUTE/SECOND/MILLISECONDをクリアしたのですが、 時フィールドが0にならず残ってしまいました。 (0を直打ちすればいいじゃんと言えばそうなんですが…) 下記実装をしたために解決せずとも済んだのですが、後学のために お付き合いいただけると幸いです。 実装コードを残しておきます。
| ||||
|
投稿日時: 2006-01-11 09:35
HOUR_OF_DAYもクリアしてください。
|
1