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

但它会在七月回归

任何解决方案或其他方法来解决这个问题?

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 回答