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

Scala-在一天中的给定时间安排一项任务:每天下午6点运行一项任务,scala,email,task,scheduler,schedule,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(

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

我有下一个代码:

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:45,您希望初始延迟为75分钟

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

你说的“标准延迟1天,你就能得到你想要的东西”是什么意思?我得到了关于初始延迟的部分,我将尝试实现它,但您的意思是将间隔设置为1天吗?(间隔时间:1天)?在设置了initialDelay之后,我怎么说它是每天的?只需确保您不会硬编码
timeToNext6pm
,而是在运行时计算它。谢谢!它工作了:D我计算日历的时间。GETStasc.GETTIME。你可以考虑DST和时区,它可以提前一个小时提前,取决于GST,如果你走准确固定的时间间隔。