Можно ли преобразовать строку в объект java sql/util Date без знания формата строкового значения.Преобразование строки в объект до даты без использования формата
ответ
Вам необходимо знать информацию о некотором форматировании. Если у вас есть несколько идей, вы можете просто перебирать их.
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, как указано в комментариях)
прерывается из цикла, как только вы успешно разбираете, если я не ошибаюсь – shikjohari
Он делает. 'return' прерывает цикл. –
Извините, я пропустил это. :П – shikjohari
Нет на самом деле. Что означает '01/01/01'? – MadProgrammer
К сожалению, на самом деле нет хорошего способа. Вы можете выполнить некоторую предварительную проверку с помощью регулярных выражений или попробовать несколько форматов и поймать ParseException (но сделать часть ошибок ожидаемого потока выполнения обычно считается плохой практикой в java, однако python ее поощряет) – RutledgePaulV
@MadProgrammer: Мой любимый 6/7/80. Я говорю о 7 июня или 6 июля? Я говорю о 1980 или 1080 или даже 2180? – Makoto