`

实现:设定小时,分钟,秒钟,要其从此按这个时间开始运行

阅读更多
             开始时认为很简单,用一个Timer就ok了嘛,过一秒加以秒钟,没想到后来接连遇到了麻烦,因为当从

23:59:59到00:00:00不会跳转,始终无法正确实现,代码如下: 设定时钟h=23,m=21,s=12(即从23:21:12开始运转)
Timer timer=new Timer(1000,new ActionListener(){public void actionPerformed(ActionEvent e){
        s=(s+1)%60;
       if(s==0){
         m=(m+1)%60
       }
      if(m==0){
           if(h==23){
          h=0 ;
        }
      }
}});这样没到类似23:59:59的时刻就会发生时刻错乱,这因该是我考虑不全的缘故。到底如何完善这种算法呢?
  我真在寻找答案。后来在翻看api 文档时,无意中看到了 Calendar类,我又想,能不能借助他来实现这一功能呢?
  可以先获取一个实例,在设定它的小时,分钟,秒钟。但他不能自己按秒走啊,怎么解决呢?有没有run方法让这

个实例从设定的时间开始运行呢?结果没找到这种run方法。后来想了半天,让我终于找到一种可以实现的方法!

思路是这样的,每隔一秒在日历实例的set方法的秒这个元素加一,这样当为60秒是,实例会自动加一分钟,并把秒

钟置为0.具体代码如下:
Calendar ca=Calendar.getInstance();
int h=23,m=21,s=12;
Timer timer=new Timer(1,new ActionListener(){
    public void actionPerformed(ActionEvent event){
    ca.set(2011, 6, 2, 23, 59, s++);
    System.out.println("..."+ca.get(Calendar.HOUR_OF_DAY)+"时"
    +ca.get(Calendar.MINUTE)+"分"+ca.get(Calendar.SECOND)

+"秒");
   
    }
     });
总结:进位问题没有解决,最后不得不借助日历类来实现,不知各位大虾有没有更好的算法?
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics