定时器到分钟:秒:几百秒

MrM*_*sUp 0 java timer

可能重复:
如何将毫秒转换为"hh:mm:ss"格式?

我打赌很多人需要一个计时器,包括:minutes : seconds : hundreds of seconds.显然,你开始:

` public TimeGame(){

    timer = new Timer(10, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            counter++;
        }
    });
    timer.start();
}`
Run Code Online (Sandbox Code Playgroud)

然后你需要调用一个改变这个计数器的方法:minutes : seconds : hundreds of seconds.

`private String timeTransfer(){

     minutes = counter/6000;
     counter = counter - (minutes*6000);
     seconds = counter/100 ;
     counter = counter - (seconds*100);
     milliseconds = counter;
     return minutes + " : " + seconds + " : " + miliseconds;
 }`
Run Code Online (Sandbox Code Playgroud)

但我的方法有一个错误.一旦它达到100毫秒,它就会跳回到0.通常它必须放0:1:0,但它会跳回到0:0:0.所有变量都在类中声明为私有.

所以我的问题是有人知道更好的方法吗?

Hov*_*els 5

建议:

  • 除了你的数学关闭,一个基本的计时器规则:不要相信计时器的时间间隔.而是存储初始系统时间,从当前系统时间中减去它,并将计算基于实时,而不是基于某些人工计数器增量.
  • 此外,你正在使用魔术数字,并需要避免它们.而是使用诸如SECONDS_PER_MINUTE和MINUTES_PER_HOUR之类的常量来帮助您避免粗心的数学错误.

  • 另外`TimeUnit`擅长转换...时间单位...例如:`long SECONDS_PER_MINUTE = TimeUnit.SECONDS.convert(1,TimeUnit.MINUTES);` (3认同)