Что-то не так с анализом.Вы не узнаете об этом из-за этого:
catch (ParseException e) {
}
Это в основном говорит: «Мне все равно, что пойдет не так - игнорируйте это».При по крайней мере вы должны регистрировать ошибку и, скорее всего, допустить всплытие исключения.
Исключения являются невероятно важным диагностическим инструментом - не простопоймать их и игнорировать их.
РЕДАКТИРОВАТЬ: Теперь, когда вопрос изменился, мы можем видеть исключение - но код все еще продолжается, как будто ничего не произошло.Даже если вы do хотите в основном игнорировать исключение, вам нужно решить, какое значение вы * date
будете иметь в случае сбоя анализа.Очевидно, что null
бесполезен - поэтому вам нужно либо , чтобы исключение всплыло (чтобы вызывающий знал, что синтаксический анализ не удался) или возвращает некоторое значение разницы (например, дата по умолчанию,или сегодня, или что-то в этом роде).
Теперь, когда это происходит, разрешение всплывающего исключения также делает код проще.Это не вызывает исключения на моем компьютере, но, возможно, на вашем:
import java.util.*;
import java.text.*;
public class Test {
public static void main(String[] args) throws Exception {
Calendar cal = parseReturnDate("19 AUG 2011");
System.out.println(cal);
}
public static Calendar parseReturnDate(String returnDate)
throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy");
Date date = formatter.parse(returnDate);
Calendar cal=Calendar.getInstance();
cal.setTime(date);
return cal;
}
}
Обратите внимание, что нам не нужно объявлять переменные отдельно для присвоения им значений, и что теперь мы позволяемвсплывающее исключение, мы можем просто присвоить date
его полезное значение напрямую.
My думаю в том, что ваш часовой пояс по умолчанию не использует «AUG» в качестве короткого названия месяца - ноЯ не могу сказать, не видя исключения.В этом случае вы можете указать языковой стандарт при создании средства форматирования:
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy",
Locale.US);
Вы можете также хотите указать часовой пояс.
(КакКроме того, Joda Time - намного превосходящий API для обработки даты и времени. Если вы потом проделаете значительную работу со значением, я бы определенно рекомендовал использовать его поверх Date
/ Calendar
.)