Я пытаюсь изолировать ошибку в своем приложении. Мне удалось создать следующую "загадку":
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
SimpleDateFormat f2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date d = f1.parse("2012-01-01T00:00:00+0700");
String s1 = f1.format(d); // 2011-12-31T18:00:00+0700
String s2 = f2.format(d); // 2011-12-31T18:00:00+0100
Я получаю значения в комментариях при запуске этого кода в Android API 7 (да, действительно). Это зависит от конкретной реализации Java.
Мои вопросы:
- Почему s1 не равно s2?
- И что еще более важно, почему s1 неверен? Пока
s2
указывает на правильный момент времени,s1
нет. Кажется, что ошибка в реализации Android SimpleDateFormat.
ОТВЕТ НА ВОПРОС 1: См. ответ BalusC:
- [После использования
SimpleDateFormat#parse
] любое другое значение TimeZone, которое ранее было установлено вызовом setTimeZone, возможно, потребуется восстановить для дальнейших операций.
ОТВЕТ НА ВОПРОС 2: См. ответ wrygiel (я).
- Это связано с ошибкой в Android 2.1 (API 7).