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

时间:2014-08-17 14:37:21

标签: java timer calendar

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。

为什么会这样?

3 个答案:

答案 0 :(得分:5)

因为Calendar.MONTH是基于零的。 Why

检查docs :(始终)

  

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

答案 1 :(得分:2)

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

所以尝试这样的事情

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

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

答案 2 :(得分:0)

应该是

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