Я пытался выявить ошибку в своем приложении. Мне удалось создать следующую «загадку»:
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.
Мои вопросы:
s2
указывает на правильный момент времени, s1
нет. Кажется, в реализации SimpleDateFormat для Android есть ошибка.ОТВЕТ НА ВОПРОС 1:См. ответ BalusC:
SimpleDateFormat#parse
] любое значение TimeZone, которое ранее было установлено вызовом setTimeZone, может потребоваться восстановить для дальнейших операций.ОТВЕТ НА ВОПРОС 2: См. ответ wrygiel (я).