我有以下代码:
SimpleDateFormat formatDDMMYYY = new SimpleDateFormat("dd/MM/yyyy");
Calendar quotationDay = Calendar.getInstance();
try {
quotationDay.setTime(formatDDMMYYY.parse("06/13/2015"));
} catch (ParseException e) {
throw new RuntimeException("Quotation date is in incorrect format.");
}
日期" 06/13/2015"是不正确的,因为没有第13个月。 Java会在2016年自动将其解析到下个月。有什么办法可以防止这种情况发生并抛出异常吗?
答案 0 :(得分:6)
答案 1 :(得分:3)
您应该按照docs
中的说明关闭宽大处理从宽
Calendar有两种解释日历字段的方式,lenient 而且不宽容。当日历处于宽松模式时,它接受a 比它产生的更广泛的日历字段值。当一个日历 重新计算get()返回的日历字段值,全部 日历字段已标准化。例如,宽大 GregorianCalendar将MONTH == JANUARY,DAY_OF_MONTH == 32解释为 2月1日。
当Calendar处于非宽松模式时,如果是,则抛出异常 其日历字段中存在任何不一致之处。例如,a GregorianCalendar总是生成介于1和之间的DAY_OF_MONTH值 这个月的长短。一个非宽松的GregorianCalendar抛出一个 计算其时间或日历字段值时的例外情况(如果有) 已设置超出范围的字段值。