我有以下代码。获得月份时会出现问题。它说''月'参数必须在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);
答案 0 :(得分:5)
这是Calendar类的一个怪癖。出于一些疯狂的原因,它使用零基础索引数月,即使所有其他日期部分都是基于一个。
甚至不要考虑提出这方面的问题,因为你会加入很多人:日历可以说是JDK中最破旧的类。
“修复”是使用jodatime library,这对于所有日期操作,解析和格式化需求都很有用。它现在几乎是行业标准。