解析日期时出错

时间:2013-01-11 03:23:41

标签: java date

我有以下代码。获得月份时会出现问题。它说''月'参数必须在1到12的范围内。'它总是返回0.为什么?

    String target = "2013-01-04";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date date = df.parse(target);

   Calendar cal = Calendar.getInstance();
   cal.setTime(date);
   int year = cal.get(Calendar.YEAR);
   System.out.println("year-"+year);
   int month = cal.get(Calendar.MONTH);
   System.out.println("month-"+month);
   int day = cal.get(Calendar.DAY_OF_MONTH);
   System.out.println("day-"+day);

1 个答案:

答案 0 :(得分:5)

这是Calendar类的一个怪癖。出于一些疯狂的原因,它使用零基础索引数月,即使所有其他日期部分都是基于一个。

甚至不要考虑提出这方面的问题,因为你会加入很多人:日历可以说是JDK中最破旧的类。

“修复”是使用jodatime library,这对于所有日期操作,解析和格式化需求都很有用。它现在几乎是行业标准。