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

How to check correct date format pattern?

我遇到了与日期格式模式相关的问题。假设用户输入错误 '200000-05-16' 而我有这样的格式 mm/dd/yyyy。我想检查格式 java class 输入的日期是错误的。

如何在java中做到?

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

请记住 SimpleDateFormat 不是线程安全的,因此不要重复使用多个线程中的实例。

这里有两种解决方法。我推荐第二个(mkyong教程)。

解决方案 1(正则表达式)

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”作为一个月或一天传递,这样就可以了。请检查此 post 以获得良好的模式:Regex to validate date format dd/mm/yyyy

解决方案 2(简单日期格式)

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

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;
        }
    }
}