非宽松模式中的SimpleDateFormat在解析有效日期时抛出ParseException

时间:2013-02-13 08:21:43

标签: java parsing scala simpledateformat

我有一个非常简单的scala类:

class StrictDateFormat(pattern: String) extends java.text.SimpleDateFormat {
  setLenient(false)
}

我在解析有效日期时收到ParseException:

new StrictDateFormat("yyyy-MM-dd HH:mm").parse("2013-02-05 16:47")
java.text.ParseException: Unparseable date: "2013-02-05 16:47"
at java.text.DateFormat.parse(DateFormat.java:337)

我已经尝试了一切,但它不起作用。

令人惊讶的是,如果我在实例化SimpleDataFormat时设置了lenient方法,那么它可以工作:

new SimpleDateFormat("yyyy-MM-dd HH:mm"){setLenient(false)}.parse("2013-02-05 16:47")
res0: java.util.Date = Tue Feb 05 16:47:00 CET 2013

这没有意义!这不是我宣布的那个班级吗? 为什么我在第一种情况下得到ParseException? 这是java或scala中的错误吗?

我的Java版本:jdk1.6.0_26 我的scala版本:2.9.1

1 个答案:

答案 0 :(得分:2)

你需要这样做:

class StrictDateFormat(pattern: String) extends java.text.SimpleDateFormat(pattern) {
  setLenient(false)
}

(调用正确的超类构造函数java.text.SimpleDateFormat(pattern)而不是java.text.SimpleDateFormat