我想驗證一個實際上是一個字符串的日期,試圖以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
。我也想要驗證。不知道如何繼續。
我想驗證一個實際上是一個字符串的日期,試圖以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
。我也想要驗證。不知道如何繼續。
默認情況下爲寬鬆。在解析之前,您需要設置它non-lenient。
ft.setLenient(false);
這將導致ParseException
當一個無效的日期和/或月份進行比較,以年爲供應。請注意,這不會驗證年份本身,因爲基本上任何年份都是有效的。根據具體的功能要求,您可能需要在一年中進行額外的檢查,例如,在/
然後分割字符串檢查,如果第1部分的長度爲4
您可以更好地使用正規驗證輸入,
見例如這樣的回答:
https://stackoverflow.com/a/2149692/1448704
塞巴斯蒂安
DateFormat比這個任務的正則表達式更合適。 – Keppil
但爲什麼寬鬆的解析會導致一個似乎與輸入不同的日期... –
@Miserable:390990天約爲1071年。它的字面意思是被解釋成月份/年份,以適應月份的持續時間。你最終進一步大約1071年。 – BalusC