验证给定字符串是否为Java中的日期

验证给定字符串是否为Java中的日期,java,jsp,date,Java,Jsp,Date,我通过html中的文本框获取字符串值。我想使用if条件验证该字符串,以查看给定字符串是否为日期 if (matches ^\d\d\d\d((01|03|05|07|08|10|12)(30|31|[012]\d)|(04|06|09|11)(30|[012]\d)|02[012]\d)$) if (endsWith "0229") return true or false depending on the year being a leap year

我通过html中的文本框获取字符串值。我想使用if条件验证该字符串,以查看给定字符串是否为日期

    if (matches ^\d\d\d\d((01|03|05|07|08|10|12)(30|31|[012]\d)|(04|06|09|11)(30|[012]\d)|02[012]\d)$)
    if (endsWith "0229")
         return true or false depending on the year being a leap year
    return true
return false
我通过谷歌搜索喜欢这段代码,但是包含错误,并且没有成功

请帮我处理这件事

我想使用if条件验证该字符串,以查看给定的 字符串是一个日期

    if (matches ^\d\d\d\d((01|03|05|07|08|10|12)(30|31|[012]\d)|(04|06|09|11)(30|[012]\d)|02[012]\d)$)
    if (endsWith "0229")
         return true or false depending on the year being a leap year
    return true
return false
您最好尝试解析。您可以使用
org.apache.commons.lang3.time.DateUtils

例如:

String[] validFormats = new String[] {"dd.MM.yyyy", "dd.MM/yyyy" };
Date date = DateUtils.parseDate(validFormats);
//Throw ParseException if String is not parsable with given formats
请注意,这里有一个限制,即它只能在日期字符串采用允许的格式之一时进行解析。如果您不想使用第三方库。您可以创建自己的方法并使用循环,如果成功获取日期,请尝试逐个解析。只返回日期。

根据注释:

您的字符串有一些标准或预定义的模式

是的,如
2015-08-30

因此,请使用:

解析字符串中的文本以生成日期

执行:

MyDateUtils.isValidDate("2015-12-31"); // returns true
MyDateUtils.isValidDate("2015-18-31"); // returns false
MyDateUtils.isValidDate("2015/12/31"); // returns false

尝试用DateFormat解析字符串,如果它抛出解析异常,那么它将无效,这将是不可能的。“2015年2月1日”是一个日期,“2015年2月2日”也是一个日期。有很多格式可以做到这一点。你的
字符串有一些标准或预定义的模式吗?@JordiCastilla是的,比如2015-08-30@hinata检查我的答案,希望它能帮助我们保持干净和简单:)