0

在标题环境中尝试这个:

http://www.javadb.com/check-if-a-string-is-a-valid-date

但是,它没有以正确的方式工作。当dateFormat.parse(inDate.trim());被调用时,它不会引发错误,而是对日期加一。

例如,如果inDate.trim()"2005-02-29",那么它会使解析像"2005-03-01"

显然,我不会有这种行为。可以做什么?

4

2 回答 2

2

2005年2月有28天。通过解析"2005-02-29",有一天的偏移量将日期变为 3 月 1 日。用于setLenient(false)防止解析器“调整”无效日期。

于 2012-10-07T03:19:58.260 回答
1

将 上的setLenient()方法设置SimpleDateFormat为 false 以在这种情况下抛出错误:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
System.out.println(sdf.parse("2005-02-29")); // This would throw parse exception.
于 2012-10-07T03:21:07.973 回答