为什么在使用java日历解析时出错了月份

Date fakeDate = sdf.parse("15/07/2013 11:00 AM"); Calendar calendar = Calendar.getInstance() calendar.setTime(fakeDate); int currentMonth = calendar.get(Calendar.MONTH); 

我得到currentMonth == 6而不是7。

这是为什么?

因为Calendar.MONTH是基于ZERO的。 为什么 ?

检查文档 :(总是)

get和set的字段编号表示月份。 这是特定于日历的值。 格里高利和朱利安日历中的第一个月是1月,即0 ; 最后一个取决于一年中的月数。

正如文档所述 – 获取和设置的字段编号表示月份。 这是特定于日历的值。 格里高利和朱利安日历中的第一个月是1月,即0; 最后一个取决于一年中的月数。

所以尝试这样的事情

 int currentMonth = calendar.get(Calendar.MONTH)+1; 

因为calendar.get(Calendar.MONTH)会给你(currentMonthValue-1),因为1月的值从0开始

它应该是

int currentMonth = calendar.get(Calendar.MONTH)+1;