У меня проблема с обратным отсчетом на основе DateField.
Приложение - установить DateField, включающее значение по умолчанию (10 минут) - получить значение поля, запустить поток и уменьшить значениекаждую секунду - показывать новое значение каждую секунду на экране
Проблема Если у моего симулятора / устройства время по Гринвичу, все работает нормально.Но если я изменю поле даты и на экране результатов отобразится неправильное значение.
Здесь поле даты имеет значение по умолчанию
long time = 1000*60*DEFAULT_PARKING;
parkingTimePicker = new DateField("",time, DateField.TIME);
TimeZone zone = TimeZone.getTimeZone("GMT");
parkingTimePicker.setTimeZone(zone);
После этого оставшиеся секунды уменьшаются каждую секунду.
Здесь оставшееся время в потоке переводится из секунд назад в чч: мм: сс
public void showTimeLeft()
{
private long timeLeft; //time left in Seconds
private SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
private Date resultdate;
resultdate = new Date(timeLeft*1000);
mainScreen.setRemainingTimeLabel(sdf.format(resultdate));
}
Здесь метод, который показывает значение на главном экране
public void setRemainingTimeLabel(String text)
{
remainingTimeLabel.setText(text);
add(new LabelField(System.currentTimeMillis()+""));
add(new LabelField(text));
}
IЯ не уверен, где я совершил ошибку, но я уверен, что это связано с Часовой пояс.Как я могу убедиться, что мое приложение работает в разных часовых поясах?