Я читал много сообщений на эту тему и пробовал примеры кода, но я не могу заставить мой анализ работать.
В моей форме есть dijit DateTextBox. Я заметил, что при использовании в разных браузерах я получаю разные String представления даты и времени. Например, сегодняшняя дата в:
IE8:
Fri Mar 11 00:00:00 MST 2011
Mozilla / Chrome / Safari:
Thu Mar 11 2011 00:00:00 GMT-0700 (US Mountain Standard Time)
Опера:
Thu Mar 11 2011 00:00:00 GMT-0700
В своем коде я создал следующие SimpleDateFormat:
private final static SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
private final static SimpleDateFormat dateFormat2 = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.US);
private final static SimpleDateFormat dateFormat3 = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ", Locale.US);
Затем я попытаюсь разобрать его позже так:
try {
calcDate = dateFormat.parse(changeDate);
} catch (ParseException e) {
try {
calcDate = dateFormat2.parse(changeDate);
} catch (ParseException e2) {
try {
calcDate = dateFormat3.parse(changeDate);
} catch (ParseException e3) {
e3.printStackTrace();
}
}
}
Пока только IE8 анализирует правильно. Я создал несколько операторов для вывода строк перед синтаксическим анализом, и, похоже, мои форматы соответствуют шаблонам.
Я даже установил библиотеку времени joda и попробовал некоторые примеры, подобные этому:
String currentDate = "Sun Mar 29 2009 00:00:00 GMT-0700";
DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd yyyy HH:mm:ss zZ");
DateTime myDate = formatter.parseDateTime(currentDate);
Это дает мне ошибку «Неверный формат ..... GMT-0700 искажен»
Пожалуйста, дайте мне знать, что я делаю неправильно. Спасибо