Scala - 在一天中的给定时间安排任务 : run a task everyday at 6pm

标签 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)
  }
}

邮件 Controller 已实现并发送邮件。

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

最佳答案

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

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

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

关于Scala - 在一天中的给定时间安排任务 : run a task everyday at 6pm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944110/

相关文章:

java - 如何在 App Engine 应用程序中处理/_ah/bounce 端点通知

ruby - 如何将命名参数传递给 Rake 任务?

C# 读写 TextFile 在中间结束

java - Scala 中的 Spark UDF 用于提取相关数据

scala - 如何使用 SpecWithJUnit 将测试标记为 pendingUntilFixed

java - 调试消息异常

php - Laravel 4 从本地主机发送电子邮件到 gmail

c# - 通过 COM 互操作调用线程

scala - 如何使用Gradle和Scala自动重新加载/热交换?

Scala,结合异构映射 - Hmap 与幺半群操作