我正在尝试对字符串进行测试,如果它的格式为dd-mm-yyyy。有什么帮助吗?
对不起,我只是个初学者。
答案 0 :(得分:6)
您可以只使用SimpleDateFormat
来实际解析并检查它是否为有效日期,而不是只检查允许dd-mm-yyyy
等输入的99-99-9999
:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
如果日期无效,则会抛出ParseException,然后您可以捕获并正确处理错误。
修改强> 的
正如波希米亚人指出的那样,这实际上并没有在99-99-9999
输入上引发异常。相反,它有点“滚动”将坏日期解释为合法日期。我认为他们可能是故意这样做的,以使日期算术更容易。例如,10-13-2000
在解析后变为10-1-2001
(没有第13个月,所以它变成了下一年的第一个月)。如果你想让它抛出异常,你需要告诉它不宽容:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.setLenient(false); // <== Added this line
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
答案 1 :(得分:3)
String test = "13-04-1999";
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
sdf.setLenient(false);
sdf.parse(test);
} catch(ParseException ex) {
//string is not valid Date in your format
}
答案 2 :(得分:2)
if(myString.matches("\\d{2}-\\d{2}-\\d{4}")){
//Do something
}
使用双反斜杠作为一个用于编译器按字面解释第二个反斜杠,并且字符串作为字符串的一部分用于为数字创建\d
转义序列。