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

Seb*_*ces 3 email schedule scala scheduler task

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

我有下一个代码:

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)
  }
}
Run Code Online (Sandbox Code Playgroud)

邮件控制器已实现,并发送邮件。

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

mat*_*its 5

在您的代码中,初始延迟为零秒。如果您计算从现在到下一个实例6pm之间的时间间隔,然后将其用作初始延迟(标准延迟为1天),则将获得所需的距离。

例如,如果现在是下午4:45,则您希望初始延迟为75分钟。

scheduler.schedule(
   initialDelay = timeToNext6pm,
   interval = 1 day,
   runnable = task)
Run Code Online (Sandbox Code Playgroud)