简体   繁体   English

在Java中将String解析为Date时出错

[英]Error parsing String to Date in Java

Yes, another Java Date post :) 是的,另一个Java Date帖子:)

My problem: 我的问题:

simple standard code, used for test if an inserted date is in the requested form (dd/MM/yyyy): 简单的标准代码,用于测试插入日期是否为请求的形式(dd / MM / yyyy):

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {

   sdf.parse(strDate); 

} catch(ParseException e) {

   // err

}

strDate = "10-12-2012" ----> sysout = err (ok) strDate =“10-12-2012”----> sysout = err(ok)

strDate = "2012-11-10" ----> sysout = err (ok) strDate =“2012-11-10”----> sysout = err(ok)

strDate = "15/10/2011" ----> sysout = parse (ok) strDate =“15/10/2011”----> sysout = parse(ok)

the problem: 问题:

strDate = "2012/12/15" ----> sysout = this date that i expect an error result parsed like "Tue Jun 03 00:00:00 CET 21" strDate =“2012/12/15”----> sysout =这个日期我希望解析的错误结果如“Tue Jun 03 00:00:00 CET 21”

Who knows??? 谁知道???

just set setLenient to false . 只需将setLenient设置为false即可

FROM API : FROM API:

setLenient method: setLenient方法:

Specify whether or not date/time parsing is to be lenient. 指定日期/时间解析是否宽松。 With lenient parsing, the parser may use heuristics to interpret inputs that do not precisely match this object's format. 通过宽松的解析,解析器可以使用启发式来解释与该对象的格式不完全匹配的输入。 With strict parsing, inputs must match this object's format. 通过严格的解析,输入必须与此对象的格式匹配。

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
  sdf.setLenient(false);
  System.out.println(sdf.parse("2012/12/15")); 
} catch(ParseException e) {
  e.printStackTrace();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM