spring-boot - Spring scheduler - 获取下一个事件的时间
问题描述
我有一个如下所示的 SpringBoot 调度程序:
@Scheduled(cron = "*/10 * * * * * ") // Every 10 seconds
public void scheduleTaskUsingCronExpression() {
long now = System.currentTimeMillis() / 1000;
System.out.println("schedule tasks using cron jobs - " + now);
}
我想得到下一个活动的时间,所以我可以在每个活动结束时打印出来。我读过 using CronExpression
,它有一个 next() 方法,但不确定我如何获得 CronExpression。或者我是否创建一个 CronExpression 并以某种方式传递它而不是使用@Scheduled
注释?
解决方案
我不确定我能否获得准确的间隔时间,但我可以从以下代码中获得大致正确的下一次运行时间。
@Value("${cron.schedule}") String schedule;
@Scheduled(cron = "${cron.schedule}") // Every 10 seconds
public void scheduleTaskUsingCronExpression() {
var expression = CronExpression.parse(schedule);
var result = expression.next(LocalDateTime.now());
System.out.println("schedule tasks using cron jobs - " + result);
}
推荐阅读
- python - 序列化公钥时“无法反序列化密钥数据”
- c++ - 使用动态分配的 char 数组的长度
- python - 将小部件保存到列表时如何使用 Tkinter 命令?
- php - 如何从 Mailchimp 获取电子邮件模板的 html 内容然后更改并发送?
- python - 从零开始的神经网络:只正确预测训练输入
- python-3.x - 使用glob查询文件的正确方法
- notepad++ - notepad ++中对齐和缩进换行之间的区别?
- c# - 如何在 UML 序列图中表示 c# setter?
- node.js - 如何将模型转换为 Mongoose 中的不同响应
- automated-tests - 如何从 @DataProvider 获取 @Before 中的 @Test 和 TestNG 中的 @AfterMethod 注释的参数值