如何检查字符串是否为dd-mm-yy形式

时间:2013-07-18 21:34:05

标签: java string

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

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

3 个答案:

答案 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转义序列。