Android计时器 - 1小时不正确

时间:2012-04-24 15:48:39

标签: android timer

我希望有人可以提供帮助。我试图设置一个从游戏开始时间的计时器,并显示这一次。问题是以下代码段给了我错误的时间。它的格式错误,一小时就出来了。

private long startTime;
private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss.SS");

//Constructor:
startTime = System.currentTimeMillis();

public String getTime() {
long gameTime = System.currentTimeMillis() - startTime;
final Date date = new Date(gameTime);
return timeFormat.format(date);
}

它一直给我输出01:00:03:203。秒是正确的,但1小时不应该在那里,格式是3位小数,而不是我认为我指定的两位。

非常感谢!

1 个答案:

答案 0 :(得分:0)

您的日期是纪元+游戏时间。我认为您正在经历夏令时转变,因为您当前所在地的当前夏令时与时代的DST不符。

使用日历而不是日期。从今天开始,明确删除小时,分钟等部分:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 3600000 + 60000 + 1000 + 1);

SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss.SS");

System.out.println(timeFormat.format(cal.getTime()));

上述输出为:01:01:01.01

http://ideone.com/DyQcl

gameTime替换上面的数字,你就完成了。

当然,一旦你的毫秒刻度超过日界,这可能不起作用。