Calendar.MONTH设置为错误的月份

时间:2013-08-31 09:49:50

标签: java

 //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月返回

任何解决方案或其他解决方法?

3 个答案:

答案 0 :(得分:4)

因为今天的日期是8月31日,而6月只有30天,所以月份会自动增加到7月份的下个月。

要解决此问题,您可以在设置月份之前设置日期

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

另外,为了清晰起见,我建议使用Calendar常量

答案 1 :(得分:0)

当您在月末(8月31日)处理日期时,众所周知的问题。 您应该明确设置日期。

例如,请阅读此处了解详情: http://www.coderanch.com/t/385083/java/java/java-util-Calendar-set

答案 2 :(得分:-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);