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

Scala - schedule a task at a given time of the day: run a task everyday at 6pm

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

我有下一个代码:

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点发邮件

在您的代码中,初始延迟为零秒。如果您计算现在与下一个下午 6 点之间的时间距离,然后将其用作初始延迟,标准延迟为 1 天,您将得到想要的结果。

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

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