日期格式不适用于Java

时间:2013-01-21 11:46:02

标签: java date

我需要根据指定的格式检查日期的有效性。谷歌搜索后,我发现了一个:

public static boolean isThisDateValid(String dateToValidate, String dateFromat){

        SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
        sdf.setLenient(false);
        ParsePosition position = new ParsePosition(0);  
        Date date = sdf.parse(dateToValidate,position);
        return date != null && position.getIndex() == dateFromat.length();

}

但是它不起作用..当我运行它时,它返回true而不是false。指定的monon值无效,即13

System.out.println(isThisDateValid("20101331","yyyymmdd"));

我错过了什么吗?

3 个答案:

答案 0 :(得分:8)

yyyymmdd

应该是

yyyyMMdd

注意MM mm用于分钟

答案 1 :(得分:7)

使用大写M数月:

System.out.println(isThisDateValid("20101331","yyyyMMdd"));

此无效的测试日期将按照预期false

返回setLenient(false)

Date Format doc

答案 2 :(得分:1)

你应该使用“yyyyMMdd”代替“yyyymmdd”

提供了解释here

为什么在您的问题中,月份值被分配给13?