让 scheduleAtFixedRate 接受小时而不是毫秒?
Make scheduleAtFixedRate accept hours instead of ms?
如何让 scheduleAtFixedRate 以小时而不是毫秒为单位接受参数,如下所示?该程序应 运行 以固定的 1 小时为间隔,即 11:25:00:00、12:25:00:00,依此类推。
public class Kronos {
public static void main(String[] args) throws ParseException {
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = dateFormatter.parse("2017-02-09 11:25:00");
long hours = 1;
long msPerHour = 3600000;
long period = hours * msPerHour;
Timer timer = new Timer();
TimerTask taskNew = new TimerTask() {
@Override
public void run() {
System.out.println("ALL WORK AND NO PLAY MAKES JACK A DULL BOY");
}
};
taskNew.scheduledExecutionTime();
timer.scheduleAtFixedRate(taskNew, d, period);
}
}
最初我考虑过类似TimeFormat.HOURS
但我不知道如何实现...
TimeUnit.HOURS.toMillis(hours)
是一种将小时转换为毫秒的简洁方法。有问题的方法似乎不能接受毫秒以外的任何东西。
如何让 scheduleAtFixedRate 以小时而不是毫秒为单位接受参数,如下所示?该程序应 运行 以固定的 1 小时为间隔,即 11:25:00:00、12:25:00:00,依此类推。
public class Kronos {
public static void main(String[] args) throws ParseException {
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = dateFormatter.parse("2017-02-09 11:25:00");
long hours = 1;
long msPerHour = 3600000;
long period = hours * msPerHour;
Timer timer = new Timer();
TimerTask taskNew = new TimerTask() {
@Override
public void run() {
System.out.println("ALL WORK AND NO PLAY MAKES JACK A DULL BOY");
}
};
taskNew.scheduledExecutionTime();
timer.scheduleAtFixedRate(taskNew, d, period);
}
}
最初我考虑过类似TimeFormat.HOURS
但我不知道如何实现...
TimeUnit.HOURS.toMillis(hours)
是一种将小时转换为毫秒的简洁方法。有问题的方法似乎不能接受毫秒以外的任何东西。