Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试着让计时器每分钟都以偶数的间隔响_Java - Fatal编程技术网

Java 试着让计时器每分钟都以偶数的间隔响

Java 试着让计时器每分钟都以偶数的间隔响,java,Java,我习惯于编写每分钟都会让计时器关闭的代码,我希望时间间隔为偶数,这样当计时器关闭时,第二个值将为零。现在我得到了当前秒数。从中减去60,这是hpw,直到第一分钟还有很多秒。然后将其乘以1000,并将计时器惯性延迟设置为该值。现在,当nbe的计时器响起时,我得到了58秒。我再次运行该程序,得到34分,然后再次运行,得到18分 设置代码 Calendar time=Calendar.getInstance(); int seconds=Calendar.SECOND; seconds=60-seco

我习惯于编写每分钟都会让计时器关闭的代码,我希望时间间隔为偶数,这样当计时器关闭时,第二个值将为零。现在我得到了当前秒数。从中减去60,这是hpw,直到第一分钟还有很多秒。然后将其乘以1000,并将计时器惯性延迟设置为该值。现在,当nbe的计时器响起时,我得到了58秒。我再次运行该程序,得到34分,然后再次运行,得到18分

设置代码

Calendar time=Calendar.getInstance();
int seconds=Calendar.SECOND;
seconds=60-seconds; // time until next minut

len=1000*60;
Timer timer = new Timer(len, this);
timer.setInitialDelay(1000*60+seconds*1000);

timer.start();
回拨码

public void actionPerformed(ActionEvent event)
{
    if (event.getID()==0)
    {
        int p;
        double d;
        p=t.daySize;
        String temp;

        Calendar firstTime2=Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        System.out.println("starting tme");
        temp=dateFormat.format(firstTime2.getTime());
        System.out.println(temp);

我不确定你指的是什么定时器类。标准的Java定时器类(Java.util.Timer)将这样使用

TimerTask tt = new TimerTask() {
    public void run()
    {
      //your current ActionEvent
    }
}

Timer t = new Timer("My Timer");
t.schedule(tt, new Date(wheneverTheFirstOneIs), 1000*60);

摆动计时器没有那么精确。您可以考虑使计时器的时间片变小,但只报告计时器到达感兴趣时间的时间。所以每2秒或5秒检查一次时间,调整增量时间,并在每分钟报告一次。