0
 //this month
        SimpleDateFormat df_formonth = new SimpleDateFormat("MMM");
        c.set(Calendar.MONTH, 5); //integer to be changed upon click - maybe month counter from now
        String currmonth = df_formonth.format(c.getTime());     

0 から 11 までの月をインデックス化するため、これは 6 月を返すはずです。

しかし、それは7月に戻ります

これを修正するための解決策または他の方法はありますか?

4

3 に答える 3

4

今日の日付は 8 月 31 日で、6 月は 30 日しかないため、月は自動的に翌月に繰り上げられ、7 月になります。

解決するには、月を設定する前に日付を設定できます

c.set(Calendar.DATE, 30);
c.set(Calendar.MONTH, Calendar.JUNE);

Calendarまた、わかりやすくするために定数を使用することをお勧めします

于 2013-08-31T10:09:15.357 に答える
0

月末 (8 月 31 日) の日付を操作している場合のよく知られた問題です。日付を明示的に設定する必要があります。

たとえば、詳細についてはこちらをお読みください: http://www.coderanch.com/t/385083/java/java/java-util-Calendar-set

于 2013-08-31T10:16:11.857 に答える
-1

次のことを試すことができます。

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int day = cal.get(Calendar.DAY_OF_MONTH);
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.MONTH, Calendar.JUNE);
于 2019-07-31T13:49:12.023 に答える