2017-02-09 3 views
1

Как сделать scheduleAtFixedRate принимать аргумент в часах, а не в ms, как это делается ниже? Программа должна работать с регулярными 1-часовыми интервалами, то есть 11: 25: 00: 00, 12: 25: 00: 00 и т. Д.Сделать графикAtFixedRate принимать часы вместо ms?

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, но я не знаю, как это осуществить ...

+0

Что значит «принять аргумент в часах»? Ваш код делает то, что вы хотите ... – IQV

+1

Вы можете использовать 'TimeUnit.HOURS.toMillis (часы)' –

+0

Использовать 'TimeUnit.HOURS.toMillis (numberOfHours)'. –

ответ

0

TimeUnit.HOURS.toMillis(hours) является кратким способом преобразования часов в миллисекундах. Этот метод, похоже, не способен принимать ничего, кроме миллисекунд.

Смежные вопросы