我希望有人可以提供帮助。我试图设置一个从游戏开始时间的计时器,并显示这一次。问题是以下代码段给了我错误的时间。它的格式错误,一小时就出来了。
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位小数,而不是我认为我指定的两位。
非常感谢!
答案 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
用gameTime
替换上面的数字,你就完成了。
当然,一旦你的毫秒刻度超过日界,这可能不起作用。