为什么在使用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;