在标题环境中尝试这个:
http://www.javadb.com/check-if-a-string-is-a-valid-date
但是,它没有以正确的方式工作。当dateFormat.parse(inDate.trim());
被调用时,它不会引发错误,而是对日期加一。
例如,如果inDate.trim()
是"2005-02-29"
,那么它会使解析像"2005-03-01"
。
显然,我不会有这种行为。可以做什么?
在标题环境中尝试这个:
http://www.javadb.com/check-if-a-string-is-a-valid-date
但是,它没有以正确的方式工作。当dateFormat.parse(inDate.trim());
被调用时,它不会引发错误,而是对日期加一。
例如,如果inDate.trim()
是"2005-02-29"
,那么它会使解析像"2005-03-01"
。
显然,我不会有这种行为。可以做什么?
2005年2月有28天。通过解析"2005-02-29"
,有一天的偏移量将日期变为 3 月 1 日。用于setLenient(false)
防止解析器“调整”无效日期。
将 上的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.