我有以下几行:
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date d = simpleDateFormat.parse("2004-52-05");我希望第2行会抛出异常,因为'52‘不是有效的月份,但是代码运行,d对象中存储的日期是
Sat Apr 05 00:00:00 EEST 2008谁能解释一下为什么吗?
发布于 2015-07-03 13:47:58
如果您想要创建一个严格匹配您的模式的日期对象,那么将宽大设置为false。
来自Javadoc
历法有两种解释历法域的模式,即宽大和非宽大.当日历处于宽松模式时,它接受的日历字段值的范围比生成的范围更广。当Calendar重新计算get()返回的日历字段值时,所有日历字段都会被规范化。例如,宽大的GregorianCalendar将月份==解释为1月,DAY_OF_MONTH == 32解释为2月1日。
有关更多信息,请参考此lenitent
所以加上这个..。
simpleDateFormat.setLenient(false);这会像你期望的那样抛出一个Exception。
java.text.ParseException: Unparseable date: "2004-52-05"https://stackoverflow.com/questions/31208368
复制相似问题