Scala - 在一天中的给定时间安排任务:每天下午6点运行任务

时间:2015-08-11 14:08:35

标签: scala email task scheduler schedule

我的问题是我如何安排在特定时间每天执行的任务。

我有下一个代码:

class ScheduleService {
   private val mail = new MailController

   def sendMailSchedule={

     val actorSystem = ActorSystem()
     val scheduler = actorSystem.scheduler
     val task = new Runnable { 
      def run() { 
        mail.sendMail("user@gmail.com", "Subject", "Body")
        println("Send")} 
      }
     implicit val executor = actorSystem.dispatcher

     scheduler.schedule(
       initialDelay = 0 seconds,
       interval = 7 day,
       runnable = task)
  }
}

实施邮件控制器并发送邮件。

此代码每7天发送一封邮件。我想要的是每天下午6点发送邮件。

1 个答案:

答案 0 :(得分:3)

在您的代码中,您的初始延迟为零秒。如果你计算从现在到下一个6pm的实例之间的时间距离,那么使用它作为初始延迟,标准延迟为1天,你将得到你想要的。

例如,如果现在是下午4:45,你想要一个75分钟的初始延迟。

scheduler.schedule(
   initialDelay = timeToNext6pm,
   interval = 1 day,
   runnable = task)