是否可以使用scheduleAtFixedRate在每个月的第一天触发一个函数?

时间:2019-02-24 18:41:18

标签: kotlin

我是kotlin的新手,我想知道是否可以执行以下操作...

我想在每个月的第一天调用一个方法,我发现了this并看到了几个这样的示例:

timer.schedule(1000) {
    println("hello world!")
}

我想知道是否可以使用(而不是固定时间)日历日?像本月初一样?

1 个答案:

答案 0 :(得分:0)

没有内置的方法。

如果一天中的确切时间无关紧要,那么一种方法是安排一个任务每24小时执行一次,并检查当前时间是否为每月的第一天,如果是,则执行任务。

(**在夏令时开始或结束时,它会稍微漂移,或者增加leap秒,但这可能并不重要。)

一种更强大(但更复杂的方法)是将计时器设置为在下个月的1月1日适当的时间关闭一次。然后,在执行任务后,它可以将自己重新安排在下个月的1号。 (即使任务引发异常,您也需要始终确保这样做。)

您可以将所有这些放到自己的计时器类中,以将其与要运行的业务逻辑分开。

有关Java中的示例(将直接转换为Kotlin / JVM),请参见the answers to these questions