2012-10-24 51 views
2

我想驗證一個實際上是一個字符串的日期,試圖以yyyy/MM/dd格式打印它。 下面是代碼。使用dateformat驗證日期

String s="2012/12/0390990"; 
SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd"); 
System.out.println(ft.format(ft.parse(s))); 

並且輸出是3083/05/30。我也想要驗證。不知道如何繼續。

回答

5

默認情況下爲寬鬆。在解析之前,您需要設置它non-lenient

ft.setLenient(false); 

這將導致ParseException當一個無效的日期和/或月份進行比較,以年爲供應。請注意,這不會驗證年份本身,因爲基本上任何年份都是有效的。根據具體的功能要求,您可能需要在一年中進行額外的檢查,例如,在/然後分割字符串檢查,如果第1部分的長度爲4

+0

但爲什麼寬鬆的解析會導致一個似乎與輸入不同的日期... –

+2

@Miserable:390990天約爲1071年。它的字面意思是被解釋成月份/年份,以適應月份的持續時間。你最終進一步大約1071年。 – BalusC