如何检查正确的日期格式模式?

时间:2015-05-28 13:11:31

标签: java date format

我面临与日期格式模式相关的问题。假设用户提供了错误的输入,例如'200000-05-16',我的格式就像mm/dd/yyyy一样。我想检查java类中的格式输入日期是错误的。

在java中怎么做?

3 个答案:

答案 0 :(得分:5)

这是两个解决方案。我推荐第二个一个(mkyong教程)。

解决方案1 ​​(Regexp)

String datePattern = "\\d{2}-\\d{2}-\\d{4}";

String date1 = "200000-05-16";
String date2 = "05-16-2000";

Boolean isDate1 = date1.matches(datePattern);
Boolean isDate2 = date2.matches(datePattern);

System.out.println(isDate1);
System.out.println(isDate2);

输出:

false
true

模式不是更好的模式,因为你可以通过" 99"作为一个月或一天,它会没事的。请查看此帖子以获得良好的模式:Regex to validate date format dd/mm/yyyy

解决方案2 (SimpleDateFormat)

此解决方案使用SimpleDateFormat检查它是否有效。 请查看此链接以获取完整且出色的解决方案:http://www.mkyong.com/java/how-to-check-if-date-is-valid-in-java/

答案 1 :(得分:2)

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;

public class TestDate {

    public static boolean isValid(String value) {
        try {
            new SimpleDateFormat("dd/mm/yyyy").parse(value);
            return true;
        } catch (ParseException e) {
            return false;
        }
    }
}

答案 2 :(得分:1)

尝试解析它,如果失败 - 格式不正确。

请记住SimpleDateFormat不是线程安全的,所以不要重用多个线程中的实例。