我需要使用日期模式“ 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
。(或者,使用Joda Time代替...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句