【问题标题】:Running a method every day at a specific time with Timer()使用 Timer() 每天在特定时间运行一个方法
【发布时间】:2019-04-01 14:42:50
【问题描述】:

使用 Kotlin、Bukkit (Spigot) 和 Timer()(或任何其他有帮助的方法),我正在尝试创建一种方法,让我可以在每天的特定时间运行另一种方法。

这是我目前所拥有的,但它不起作用。

fun schedule() {
        val timer = Timer()
        val format = SimpleDateFormat("hh:mm:ss") 
        val date = format.parse("11:07:09")
        timer.schedule(sendMessage(), format, date)
}

fun sendMessage() {
    System.out.println("Test");
}

不起作用,因为 timer.schedule() 需要 TimerTaskDatelong

我感到困惑的是,如何转换格式和日期以便将其添加到 timer.schedule() 以便每天运行?另外,我将如何尊重时区,并确保它至少在服务器时间附近运行?

【问题讨论】:

  • @TimurLevadny 是的,我看到了这个问题,我尝试将其转换为我正在做的事情,但它没有我需要的确切格式(hh:mm:ss,将从一个文件)和格式化的日期(11:07:09),使用起来很混乱。
  • 一个值得考虑的好习惯是将 AWS lambda 函数定义为一个计时器,该计时器将触发您提供的端点(如果您可以使用 AWS lambda...)
  • @LiorBar-On 不知道你在那里说了什么。
  • 好的。也许您最好创建一个关于日期转换的新的、更具体的问题。比这更容易回答。

标签: java kotlin bukkit timertask


【解决方案1】:
val timer = Timer()
val task: TimerTask = object : TimerTask() {
    override fun run() {
       // do your task here
    }
}
// repeat every hour
timer.schedule(task, 0L, 1000 * 60 * 60)

参考here

【讨论】:

    最近更新 更多