如何检查正确的日期格式模式?
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;
}
}
}
我遇到了与日期格式模式相关的问题。假设用户输入错误 '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;
}
}
}