2012-12-04 57 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'。请尝试。 –

相关问题