问题描述
- 要用java实现秒表的计时功能
-
编写一个类,实现开始计时,停止计时,重置等功能。而且精确到毫秒数,要用到哪些方法啊
解决方案
windows平台,你点了停止,这个消息传到窗口,然后处理,是有延迟的,不管怎么说,延迟大于1毫秒的可能性大。虽然你的程序也能得到一个计数,但是肯定有效的精度达不到要求的。
解决方案二:
Date里就有毫秒,然后弄个timer定时更新界面就行了
解决方案四:
拿到毫秒,甚至分秒:
计时用Timer和timerTask,另外可以试System里的一个获取时间戳的算一下误差
解决方案五:
获取当前毫秒 可以使用System.currentTimeMillis()。或用Calendar.getInstance().getTimeInMillis()
开始计时事件:记录开始时的毫秒数。startTime 可以记录当前即可
停止计时事件:也记录当前时间。endTime
重置事件:实际是指全部记录还原。程序回归到等待开始计时状态
结果值计算:passTime = endTime - startTime。结果也是一个毫秒数
推荐围绕java.util.Calendar对象进行处理。
讲passTime设置给Calendar。
利用int java.util.Calendar.get(int field) 获取相应值
例如
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(millis)
int millisecond = cal.get(Calendar.MILLISECOND);
int second = cal.get(Calendar.SECOND);
int munute = cal.get(Calendar.MINUTE);
最后显示就是
munute+分+second秒+millisecond毫秒
这里需要注意几点。
1.Calendar有个起始时间就是那个1970年XXXXX 因为这个应用估计也取不到年月日。所以这个可以忽略
2.毫秒和秒是1000进制
3.时区问题。当前这个应用也可以忽略
推荐Calendar的原因是他操作方便。而且可以支持加减法等奇妙的应用需求
可以这么说。关于时间的问题Calendar绝对没问题