Я пытаюсь изучить все тонкости методов parse() и format() DateFormat для экзамена SCJP 6. Недавно я попытался написать код для форматирования и анализа дат и обнаружил, что метод разбора работает только в том случае, если строка отформатирована в соответствии с форматом экземпляра DateFormat. Означает ли это, что если бы я использовал этот класс в реальной жизни и читал документ, в котором даты были отформатированы 6 различными способами, мне потребовались бы 6 разных объектов DateFormat для успешного анализа строк в объекты даты?
import java.util.*;
import java.text.*;
import java.io.Console;
class PlayWithDates {
public static void main(String[] args) {
String formatted = "";
Date parsed;
Date d1 = new Date();
DateFormat defaultFormat = DateFormat.getDateInstance();
DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT);
formatted = defaultFormat.format(d1);
System.out.println(formatted);
formatted = shortFormat.format(d1);
System.out.println(formatted instanceof String);
System.out.println(formatted);
try {
parsed = shortFormat.parse(formatted);
System.out.println(parsed);
} catch(ParseException pe) {
System.out.println(pe);
}
try {
parsed = defaultFormat.parse(formatted);
System.out.println(parsed);
} catch(ParseException pe) {
System.out.println(pe);
}
}
}
Когда я запускаю эту программу, я получаю:
Dec 11, 2013
true
12/11/13
Wed Dec 11 00:00:00 MST 2013
java.text.ParseException: Unparseable date: "12/11/13"
Мне кажется, что было бы очень сложно предсказать, когда String будет разборчива или нет. Должен ли я как-то делать это с экземпляром календаря? Спасибо за любые объяснения. Я немного схожу с ума, готовясь к этому экзамену.