2016-01-25 1 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 ok Я думаю, что если нет другого пути, тогда это лучший способ :) – ulab

ответ

0

Нет, как заявлено @ControlAltDel в комментариях SimpleDateFormat не будет работать таким образом. Вы будете должны:

  1. Добавить дополнительную проверку
  2. Решите, что дополнительные символы «ОК» и использовать данные, которые SimpleDateFormat разбирает из
+0

ОК, я вижу. Благодарю. – ulab

Смежные вопросы