2012-12-04 62 views
1

用戶應在下一格式yyyy-MM-dd中輸入日期。所以我用檢查它在我身邊:檢查日期是否適合定義日期模式

public static boolean isDateValid(SimpleDateFormat dateFormat, String date) { 
    try { 
     dateFormat.parse(date); 
     return true; 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     return false; 
    } 
} 

但它返回真實的,即使我進入12-12-2012

SimpleDateFormat("yyyy-MM-dd") 
+0

爲什麼你要強制用戶這樣做 - 只要檢查一下它的有效日期是否就足夠了 - 不管是什麼格式? - > http://stackoverflow.com/questions/226910/how-to-sanity-check-a-date-in-java oyu驗證過後,你可以將你的simpledateformat格式化爲你希望的日期格式 –

+0

@tenhouse:在這種情況下,2012年12月12日是什麼日期? 10月10日或10月12日? – njzk2

+0

好主意,謝謝你的建議。 – pvllnspk

回答

2

您可以使用DateFormat.setLenient(false),避免做lenient解析: -

try { 
     dateFormat.setLenient(false); 
     dateFormat.parse(date); 
     return true; 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     return false; 
    } 

來自文檔: -

通過寬鬆的語法分析,解析器可以使用啓發式來解釋不精確匹配此對象格式的輸入。通過嚴格的 解析,輸入必須匹配此對象的格式。

+0

在這種情況下,12-12-12被認爲是「yyyy-MM-dd」日期格式的有效數據。 – pvllnspk

+0

可能是'0012-12-12'。如果這樣做的話,它可能也適用於 - '12-2-2'。請嘗試。 –

相關問題