這是一個衆所周知的問題,已經出現在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