我使用下面的模式和日期的SimpleDateFormat給人錯誤的日期,而不是錯誤
日期:13-13-2007
模式:DD-MM-YYYY
輸出:太陽00年1月13日: 00:00 IST 2008 或 2008-01-13 00:00:00.0
我在這裏期待異常。給定日期時我能做些什麼來產生異常是不合適的。
我使用下面的模式和日期的SimpleDateFormat給人錯誤的日期,而不是錯誤
日期:13-13-2007
模式:DD-MM-YYYY
輸出:太陽00年1月13日: 00:00 IST 2008 或 2008-01-13 00:00:00.0
我在這裏期待異常。給定日期時我能做些什麼來產生異常是不合適的。
使用DateFormat.setLenient(false)
告訴DateFormat
/SimpleDateFormat
您希望它是嚴格的。
設置寬鬆將在大多數情況下工作,但如果你想查詢的確切字符串模式那麼這可能幫助,
String s = "03/6/1988";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
sdf.setLenient(false);
Date d = sdf.parse(s);
String s1 = sdf.format(d);
if (s1.equals(s))
System.out.println("Valid");
else
System.out.println("Invalid");
} catch (ParseException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
如果你給的輸入爲「1988年3月6日」,那麼你會得到有效的結果。
Thnkx快速回復 – 2011-05-17 10:02:56
做了修改之後,你提到它在日期中給出解析錯誤:「13-10-2007 16:52:12.014789」,pattern:「dd-MM-yyyy HH:mm:ss。 SSSSSS」。 – 2011-05-17 11:55:45
我找到了答案。 Java在ms字段中支持3位數字表示dd-MM-yyyy HH:mm:ss.SSS是可支持的 – 2011-05-17 12:36:29