プロが教える店舗&オフィスのセキュリティ対策術

WIN XP j2sdk1.4.2_04 です。
宜しくお願いします。


int chkYear = 2004
int chkMonth = 07
int chkDay = 26

Calendar cal1 = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar(chkYear,chkMonth-1,chkDay);
cal1.get(cal1.YEAR);
cal1.get(cal1.MONTH);
cal1.get(cal1.DATE);


if(cal2.before(cal1) == true){ 
処理
}

cal1 で現在の日時を取得し
Beforeメソッドで
cal2 の値が現在日時より過去だったらエラーを返す
ような処理にしてます。

Cal2に当日の日付を入力すると
過去の日付となってしまいます。
前日と翌日はきちんと動作しますが、
当日だけがうまく行きません。

なにか良い方法はありますでしょうか?

A 回答 (1件)

以下のようにフォーマットして表示させると原因が分かりますよ。



SimpleDateFormat sd = new SimpleDateFormat("yyyyMMddHHmmss");
System.out.println("cal1:" + sd.format(cal1.getTime()));
System.out.println("cal2:" + sd.format(cal2.getTime()));

「cal1」にはオブジェクトを生成した時点のタイムスタンプ、
「cal2」には当日午前0時のタイムスタンプが設定されるからです。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみませんでした。
時間の部分で引っかかってるのでは
となんとなく思っていたのですが、
はっきりわかりましたどうもありがとうございました。

お礼日時:2004/07/30 15:35

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