-3

我正在尝试对字符串进行测试,如果它的格式为 dd-mm-yyyy。请问有什么帮助吗?

对不起,我只是一个初学者。

4

3 回答 3

6

除了检查dd-mm-yyyy允许输入之类的输入之外99-99-9999,您还可以使用SimpleDateFormat它来实际解析并检查它是否是有效日期:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");

如果日期无效,它会抛出ParseException,然后您可以捕获并适当地处理错误。

编辑:

99-99-9999正如 Bohemian 指出的那样,这实际上并没有在输入上引发异常。相反,将错误日期解释为合法日期有点“翻车”。我认为他们可能故意这样做是为了使日期算术更容易。比如解析后10-13-2000变成10-1-2001(没有第13个月,所以改为下一年的第1个月)。如果你想让它抛出异常,你需要告诉它不要宽容:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.setLenient(false); // <== Added this line
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
于 2013-07-18T21:47:10.093 回答
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  
}
于 2013-07-18T21:45:29.837 回答
2
if(myString.matches("\\d{2}-\\d{2}-\\d{4}")){
    //Do something
}

双反斜杠用作一个用于编译器按字面意思解释第二个,而作为字符串一部分的字面量用于制作\d数字的转义序列。

于 2013-07-18T21:36:15.630 回答