平日に応じて日付に1ヶ月を足すようにしています。たとえば、日付は9月の3月曜日です。追加した後、10月の3.月曜日が欲しいです。次の日付に1か月追加してみました
Mon Sep 17 17:30:00 MESZ 2012
このコードで:
Calendar date = Calendar.getInstance();
date.setTimeInMillis(date_in_mil);
date.add(Calendar.DAY_OF_WEEK_IN_MONTH, 3);
しかし、私は得ました
Mon Oct 08 17:30:00 MESZ 2012
これは10月の第2月曜日であり、第3月曜日ではありません。誰かがこれがどのように機能するか考えていますか?
編集 これは私が以下の答えのように使用した解決策です:
int prevDayOfWeek = date.get(Calendar.DAY_OF_WEEK);
date.add(Calendar.MONTH, 1);
date.set(Calendar.DAY_OF_WEEK, prevDayOfWeek);
date.set(Calendar.DAY_OF_WEEK_IN_MONTH, week);
wereby weekは、1か月の週の数です。たとえば、1は最初の例、2は2番目の例、というように続きます。ただし、週は逆方向にカウントすることもできます。たとえば、-1は月の最後の週を意味します。