这是一个众所周知的问题,已经出现在stackoverflow上。 我被要求解决Web应用程序中的错误。 我有一个来自网络表单的日期,用户应该输入给定格式的有效日期dd/MM/yyyy
。日期格式转换在Java中没有像预期的那样工作
该应用程序使用Struts 1.3作为框架,这就是我在验证相应FormBean的方法时所发现的。
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", aLocale);
try{
mydate = dateFormat.parse(formDate);
}
catch(ParseException pe){
errors.add("error", new ActionError("error.date.invalid"));
}
但是它的发生的错误不会引发例如,当用户在短格式输入年份,即01/10/12
,将其转化为一个日期,寻找数据库中,我发现01/10/0012
。
作为一个快速解决方案,我尝试使用setLenient(false)
,但仍未引发异常,并且mydate仍会导致有效但错误的日期。
在讨论正则表达式和字符串预解析之前,我想知道我是否错过了一些东西。特别是在日期格式实例化中使用区域设置时。在项目中使用
最新的JDK是1.5
“aLocale”的价值是什么? – Azodious
你可以看看http://stackoverflow.com/questions/226910/how-to-sanity-check-a-date-in-java,它有一些想法可能有帮助 – MadProgrammer