2015-01-14 3 views
-1

Можно ли преобразовать строку в объект java sql/util Date без знания формата строкового значения.Преобразование строки в объект до даты без использования формата

+3

Нет на самом деле. Что означает '01/01/01'? – MadProgrammer

+0

К сожалению, на самом деле нет хорошего способа. Вы можете выполнить некоторую предварительную проверку с помощью регулярных выражений или попробовать несколько форматов и поймать ParseException (но сделать часть ошибок ожидаемого потока выполнения обычно считается плохой практикой в ​​java, однако python ее поощряет) – RutledgePaulV

+1

@MadProgrammer: Мой любимый 6/7/80. Я говорю о 7 июня или 6 июля? Я говорю о 1980 или 1080 или даже 2180? – Makoto

ответ

3

Вам необходимо знать информацию о некотором форматировании. Если у вас есть несколько идей, вы можете просто перебирать их.

private static String[] formats = new String[] {/* Your list of possible formats */}; 
public static Date parse(String date) throws ParseException { 
    for (String format : formats) { 
     DateFormat df = new SimpleDateFormat(format); 
     try { 
      return df.parse(date); 
     } catch (ParseException e) {} 
    } 
    throw new ParseException(
      "This date does not conform to any known format", 0); 
} 

Конечно, это только если в тот же день не будет выполнять различные форматы (например, 01/01/01, как указано в комментариях)

+0

прерывается из цикла, как только вы успешно разбираете, если я не ошибаюсь – shikjohari

+0

Он делает. 'return' прерывает цикл. –

+0

Извините, я пропустил это. :П – shikjohari