#java
#java
Вопрос:
У меня возникла распространенная проблема, заключающаяся в том, что я хочу разобрать строку на дату.
Строка выглядит следующим образом 15.06.11 13:38:33 UTC
. Но результат будет 15.38.0011 13:38:33 UTC
при форматировании с использованием того же средства форматирования, которое использовалось для анализа строки по дате. TimeInMillis возвращает отрицательное значение -61818978087000
.
SimpleDateFormat formatter = new SimpleDateFormat("dd.mm.yyyy HH:mm:ss z");
formatter.setLenient(false);
Date time = formatter.parse("15.06.11 13:38:33 UTC");
Calendar timestamp = Calendar.getInstance();
timestamp.setTime(time);
Я благодарен за любую помощь, которую я могу получить. Возможно, я совершаю какую-то глупую ошибку, но я ее не вижу. Пожалуйста, открой мне глаза.
Ответ №1:
Месяцы — это MM
, а не mm
(то есть минуты)
и yyyy
до yy
(ваш год, как кажется, двухзначный) (спасибо Питеру, что заметил это)
Ответ №2:
Сделайте это
dd.MM.yyyy HH:mm:ss z
Из документа
M Month in year Month July; Jul; 07
m Minute in hour Number 30
Ответ №3:
Вам нужно изменить месяц на MM
, но также изменить год на yy
в противном случае при использовании yyyy
будет предполагаться, что 15.06.11
было в этом году 11
вместо 2011
System.out.println(new SimpleDateFormat("dd.MM.yy HH:mm:ss z")
.parse("15.06.11 13:38:33 UTC"));
печатает для меня (поскольку я GMT 1)
Wed Jun 15 14:38:33 BST 2011
Комментарии:
1. Я всегда пробую код сам. Я много раз попадался на том, что предполагал, что остальная часть кода верна. 😉