Разбор SimpleDateFormat и неоднозначные форматы дат - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь отклонить синтаксический анализ (через SimpleDateFormat :: parse) значения "18:00" из формата даты HH. Есть ли способ сделать это без лишнего кода? Принимает ли формат даты $ / регулярные выражения? Я включил для setLenient значение false, и 18:00 все еще проходит через формат даты HH.

Я понимаю, что могу сделать другие сравнения с анализируемой строкой, но я ищу способ сделать это в строке DateFormat.

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Нет, SDF не разрешает "правила". Он просто анализирует и форматирует даты в соответствии с шаблоном, а не шаблоном типа регулярного выражения, поэтому никаких регулярных выражений нет.

0 голосов
/ 12 августа 2011
  1. SimpleDateFormat выполняет своего рода проверку - она ​​генерирует исключение ParseException, если вы пытаетесь проанализировать строку, которая не означает указанный формат (хотя Javadoc кричит только об исключенииесли начало не соответствует формату (http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse(java.lang.String))).

  2. Если формат даты просто «ЧЧ», то строка «18:00» соответствует этому формату. Если формат даты был «ЧЧ: МММ»", (Двузначный час, за которым следует трехбуквенный месяц), тогда это, вероятно, должно вызвать исключение ParseException.

Если вы пытаетесь выполнить такую ​​проверку, я рекомендуюиспользуя Regex или даже просто используя Java-код. Я не уверен, чего вы пытаетесь достичь, поэтому я не могу давать дальнейшие советы, боюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...