我需要使用日期模式“yyyy-MM-dd”解析输入字符串中的日期,如果日期采用任何其他格式,则抛出错误。
这是我解析日期的代码:
private void validateDate() throws MyException {
Date parsedDate;
String DATE_FORMAT = "yyyy-MM-dd";
try{
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse(getMyDate());
System.out.println(parsedDate);
} catch (ParseException e) {
throw new MyException(“Error occurred while processing date:” + getMyDate());
}
}
当我在 myDate 中输入像“2011-06-12”这样的字符串时,我将得到输出“Thu Sep 29 00:00:00 EEST 2011”,这很好。
当我发送“2011-0612”等不正确的字符串时,我收到了预期的错误。
当我尝试传递仍然有两个“连字符”的字符串,但位数错误时,问题就开始了。
例子:
输入字符串“2011-06-1211”
结果“2014 年东部夏令时间 9 月 23 日星期二 00:00:00”。
输入字符串“2011-1106-12”
结果“2 月 12 日星期一 00:00:00 EET 2103”。
我无法更改字符串日期的输入格式。
我怎样才能避免它?
你试过打电话吗setLenient(false)
在你的SimpleDateFormat
?
import java.util.*;
import java.text.*;
public class Test {
public static void main(String[] args) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setLenient(false);
Date date = format.parse("2011-06-1211"); // Throws...
System.out.println(date);
}
}
请注意,我还建议设置您的时区和区域设置SimpleDateFormat
。 (或者,使用乔达时间 http://joda-time.sf.net反而...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)