【发布时间】:2015-08-11 00:31:01
【问题描述】:
我面临与日期格式模式相关的问题。假设用户给出了这样的错误输入'200000-05-16',而我的格式是这样的mm/dd/yyyy。我想检查java类中的格式输入日期错误。
在java中怎么做?
【问题讨论】:
-
也许您可以尝试解析输入字符串并获取异常?
-
请注意,
mm表示 分钟。你的意思是MM/dd/yyyy。MM表示月份。
我面临与日期格式模式相关的问题。假设用户给出了这样的错误输入'200000-05-16',而我的格式是这样的mm/dd/yyyy。我想检查java类中的格式输入日期错误。
在java中怎么做?
【问题讨论】:
mm 表示 分钟。你的意思是MM/dd/yyyy。 MM 表示月份。
这里有两个解决方案。我推荐第二个(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/
【讨论】:
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;
}
}
}
【讨论】:
尝试解析它,如果失败 - 格式不正确。
请记住,SimpleDateFormat 不是线程安全的,因此不要重用来自多个线程的实例。
【讨论】: