アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみませんが、どなたか教えて下さい。

日付の加算を4週間後、というような日付の加算をしたいのですが、
28日や31日の月があった場合、ずれてしまいます。
どのようにしたら正確なカレンダー通り加算ができるでしょうか?
「20060404」の結果が欲しいが下記だと、「20060405」となってしまう。

Calendar cal = Calendar.getInstance();
cal.set(2006,3,7);
int plus = 7*4; //7日×4週間
cal.add(Calendar.DATE, plus);

A 回答 (3件)

4週後なら、日付に変換しなくても、以下の引数で計算できます。



cal.add(Calendar.WEEK_OF_YEAR, 4);

Calendar.WEEK_OF_YEARは、addで利用する場合、1週間単位というパラメータとして利用出来ます。
他の単位もAPIに載っているので参考にして下さい。

参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
    • good
    • 0
この回答へのお礼

ありがとうございました!! 勉強になりました。 早速使わせていただきます!

お礼日時:2006/09/19 14:17

こんにちは、



SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Calendar today = Calendar.getInstance();
System.out.println(sdf.format(today.getTime()));
today.set(2006,2,7);
System.out.println(sdf.format(today.getTime()));
today.add(Calendar.DATE,28);
System.out.println(sdf.format(today.getTime()));

の出力結果は

2006/09/11
2006/03/07
2006/04/04
    • good
    • 0
この回答へのお礼

丁寧に教えていただきありがとうございました!!
SimpleDateFormat("yyyy/MM/dd")は現在使っていないので
こちらも参考にさせていただきたいと思います!!

お礼日時:2006/09/11 16:41

cal.set(2006,3,7);


これは、2006/4/7のことなので、4週間後は2006/5/5ですね。

Calendarクラスの月は0から始まるので勘違いなさってるのではないでしょうか?
    • good
    • 0
この回答へのお礼

はい、勘違いしておりました。
getで月の値を取得(+1をせずに)していたので、気付きませんでした。
ありがとうございました!!

お礼日時:2006/09/11 16:40

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