我有一个与基于 DateField 的倒计时有关的问题。
应用程序 - 设置包含默认值的 DateField(10 分钟) - 获取字段的值,启动线程并每秒减少值 - 每秒在屏幕上显示新值
问题如果我的模拟器/设备是 GMT 一切正常。但是,如果我更改 DateField 并且结果屏幕显示错误的值。
这里是 Datefield 并且设置了默认值
long time = 1000*60*DEFAULT_PARKING;
parkingTimePicker = new DateField("",time, DateField.TIME);
TimeZone zone = TimeZone.getTimeZone("GMT");
parkingTimePicker.setTimeZone(zone);
之后,剩余的秒数每秒减少。
这里线程中的剩余时间从秒转换回 hh:mm:ss
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));
}
我不确定我在哪里犯了错误,但我很确定它与时区有关。如何确保我的应用在不同的时区运行?