将字符串解析为sql有效的日期:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
try {
date = df.parse(dateimput);
} catch (ParseException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
使用dateimput是我从我的表单得到的:
String dateimput=request.getParameter("datepicker");
但在运行时看到错误:
java.text.ParseException: Format.parseObject(String) failed
at java.text.Format.parseObject(Unknown Source)
at ServletEdition.doPost(ServletEdition.java:70)
所以这意味着dateimput不知道+我注意到它在以下情况下被正确显示:
System.out.println("datepicker:" +dateimput);
感谢。
答案 0 :(得分:1)
所以这似乎是第一次变得复杂,但仔细查看解决方案。 事实上,我们需要2个简单日期格式,因为在我的情况下解析将分两步完成:
System.out.println("datepicker:" +dateimput);
SimpleDateFormat df1 = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat df2=new SimpleDateFormat("yyyy-MM-dd");
Date dt=null;
try {
dt = df1.parse(dateimput);
System.out.println("dt" +dt);
System.out.println("dt formatted" +df2.format(dt));
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
现在工作正常,没问题
答案 1 :(得分:0)
“未知错误”错误只是意味着您的类路径不包含JDK源,因此它不知道Format的代码中发生异常的位置(它确实知道告诉您ServletEdition中的哪一行有问题但是)。
答案 2 :(得分:0)
发生此错误是因为parse
方法的输入字符串与模式应该看起来不一样:
public Date parse(String source)抛出ParseException [...] 抛出: ParseException - 如果无法解析指定字符串的开头。
请参阅parse
文档。
看来,dateimput
中提供的输入无效。因为这可能总是发生在用户输入(我假设,该值实际上是用户输入...),最好使用,例如,another version of parse,它允许您确定输入字符串中的位置解析器必须要ping,并且在这种情况下不需要你捕获异常,但是使用结果和ParsePosition
参数告诉你失败。
ParsePosition posn = new ParsePosition();
Date parsed = format.parse(input, posn);
if( parsed == null ) {
int badPosn = posn.getErrorIndex();
System.out.println("The input is invalid; the parser stopped at " + badPosn);
} else {
// Do something with the date...
}