我面临与日期格式模式相关的问题。假设用户提供了错误的输入,例如'200000-05-16'
,我的格式就像mm/dd/yyyy
一样。我想检查java类中的格式输入日期是错误的。
在java中怎么做?
答案 0 :(得分:5)
这是两个解决方案。我推荐第二个一个(mkyong教程)。
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
此解决方案使用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不是线程安全的,所以不要重用多个线程中的实例。