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

问题描述 投票:0回答:1

我是新的使用kotlin,我想知道我是否可以做以下...

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

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

我想知道是否可以使用(而不是固定的时间)一个日历日?喜欢这个月的第一天?

kotlin
1个回答
0
投票

没有内置的方法来做到这一点。

如果确切的时间与*无关,那么一种方法是安排任务每24小时触发一次,并检查当前时间是否是该月的第一天,如果是,则执行任务。

(*夏季时间开始或结束时会略微漂移,或者闰秒会增加,但这可能并不重要。)

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.