2016-01-25 168 views
-1

SimpleDateFormat似乎忽略匹配字符串中的字符串,一旦它找到匹配模式。Java Simpledateformat似乎忽略字符串匹配模式

例如:模式"yyyyMMddHHmm"匹配201601251531oi,我认为它不应该。然而这20160125153133失败,这是完全正确的。 我试图setLenient作为true并没有效果。我知道我们可以添加另一个检查数字位数(正则表达式),但有办法严格使这种模式只能使用SimpleDateFormat

public static boolean isValidDateTimeFormat(String anyString, 
        String dateTimePattern) { 
       // here the pattern is 'yyyyMMddHHmm' 
       SimpleDateFormat datePattern = new SimpleDateFormat(dateTimePattern); 
       datePattern.setLenient(false); // no difference 
       try { 
        datePattern.parse(anyString); 
        return true; 
       } 
       catch (Exception pe){ 
        return false; 
       } 
     } 
+0

数据只要做到这一点你已经的方式思维。这可能是最好的方法 – ControlAltDel

+0

@keppil如果它是重复的,那么指出这些,而不仅仅是标记为重复。在添加这个问题之前,我做了搜索,并且在SimpleDateFormat中有许多问题,并且他们都没有提供答案。 – ulab

+0

@ControlAltDel好吧我想如果没有其他方式,那么这是更好的方法:) – ulab

回答

0

不,如@ControlAltDel在注释SimpleDateFormat中所述不会以这种方式工作。你要么需要:

  1. 添加额外的验证
  2. 决定多余的字符是“OK”,并使用SimpleDateFormat的解析出
+0

好的,我明白了。谢谢。 – ulab