У меня следующий фрагмент кода:android - SimpleDateFormat разбирает данные странным образом. Неправильный месяц или/и
final Date d = format.parse(value);
LOGGER.debug("Compare:\nOriginal: {}, Format: {}, Result: {}", value, format.toPattern(), d);
return d;
value
является строковым значением из JSON,
format
является java.text.SimpleDateFormat,
d
является датой который анализируется от value
раз он отлично работает, но иногда он возвращает странные даты.
Пример из LogCat:
D/App: 20:14:47.309 com.example.backend.BackendHelper - Compare: Original: 2016-09-16 13:45:00.000+0200, Format: yyyy-MM-dd HH:mm:ss.SSSZ, Result: Fri Jan 01 05:00:00 GMT+07:00 2016 D/App: 20:14:47.309 com.example.backend.BackendHelper - Compare: Original: 2016-09-16 13:20:00.000+0200, Format: yyyy-MM-dd HH:mm:ss.SSSZ, Result: Fri Jan 01 18:20:00 GMT+07:00 2016 D/App: 20:14:47.338 com.example.backend.BackendHelper - Compare: Original: 2016-09-16 15:20:00.000+0200, Format: yyyy-MM-dd HH:mm:ss.SSSZ, Result: Thu Jan 01 05:00:00 GMT+07:00 1970
Как вы можете видеть, он возвращает неправильную Дату (неправильный год или/и месяц или/и час) для строковых значений, которые имеют абсолютно одинаковый формат и отличаются друг от друга другие только по часам и минутам.
Вопрос: Почему?
Как вы инициализировали 'format'? –
@ Code-Apprentice new SimpleDateFormat («yyyy-MM-dd HH: mm: ss.SSSZ», Locale.US), –
Невозможно воспроизвести на простой Java (1.8.0_91 Win64). – Andreas