ちょっと先の未来クイズ第4問

ある日付が、ある日付の前(後)の月かどうかを調べる方法を
知りたいのですが・・↓

1.日付を表すjava.sql.Dateオブジェクト-その1
2.日付を表すjava.sql.Dateオブジェクト-その2

1が2より前の月かどうか
1が2より後の月かどうか

を調べる方法を教えて下さい。

A 回答 (4件)

とおもったらいろいろ間違えてました。



cal.set(2002,12-1,29); //これは2002年12月29日
ですね。

しかも
private static int compareDate(Date d1, Date d2) {
Calendar cal1 = GregorianCalendar.getInstance();
cal1.setTime(d1);
int n = cal1.get(Calendar.MONTH);
cal1.setTime(d2);
int m = cal1.get(Calendar.MONTH);
return (n - m<0?n-m+12:n-m);
}
}
とするべきでしたね。

でも年の繰り下がりとか繰り上がりとかきにしなくて大丈夫なんですか?
    • good
    • 0

cal.set(2003,1-1,29); //これは2003年1月29日


cal.set(2002,12-1,29); //これは2002年11月29日

だから-11がもどってくるのはしょうがないですね。
仕様的には年は関係なく月の差だけでよいのでしたら

差がマイナスのときは12を足せばよいのではないでしょうか?
    • good
    • 0

失礼しました。


質問の意味を早とちりしてしまいました。
ただの前後関係じゃないのですね。

下の方法なんかどうでしょうか?


public class CompDate {

public static void main(String[] args) {
Calendar cal = GregorianCalendar.getInstance();
cal.set(2003,7-1,29);
Date d1 = cal.getTime();
cal.set(2003,6-1,29);
Date d2 = cal.getTime();
System.out.println(d1.toString());
System.out.println(d2.toString());
int n = compareDate(d1, d2);
System.out.println(n);
}

private static int compareDate(Date d1, Date d2) {
Calendar cal1 = GregorianCalendar.getInstance();
cal1.setTime(d1);
int n = cal1.get(Calendar.MONTH);
cal1.setTime(d2);
int m = cal1.get(Calendar.MONTH);
return n - m;
}
}

この回答への補足

compareDateメソッドに、以下の日付をセットした場合
どちらも戻値が「1」になるはずですが、
2の場合は「-11」となってしまいました・・。

1.
cal.set(2003,7-1,29);
cal.set(2003,6-1,29);

2.
cal.set(2003,1-1,29);
cal.set(2002,12-1,29);

自力で直せないので、度々申し訳ありませんが
できれば年がまたがっても、正しく取得できる方法を
教えて頂けないでしょうか・・。
何度もお手数おかけしてすみません。

補足日時:2003/07/29 14:58
    • good
    • 0

java.sql.Dateはjava.util.Dateのサブクラスなので


java.util.DateのAPIをみてください。

そのままのっています。

この回答への補足

ご回答ありがとうございます。

前の月かどうかを取得するメソッドって探しても見つからなかったのですが
どれになるのでしょうか・・
(前の日付かどうかを取得するメソッドはあったのですが・・。)

例えば、5/10と5/20を比べた時、
「5/10は5/20よりも前の日にちかどうか」ではなく、
「5/10は5/20よりも前の月かどうか」を調べたいです。

5/10と5/20を比較した結果、
<1>5/10は5/20よりも前の日付
<2> 5/10は5/20よりも前の月ではない(同じ月である)
1ではなく、2を取得したいのです。

もし何かメソッドがあれば具体的に教えて頂けないでしょうか・・。
自分でjava.util.Dateとjava.sql.Dateを調べてみたのですが
わからなったので・・。申し訳ありません。

補足日時:2003/07/29 09:24
    • good
    • 0

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


おすすめ情報