corn传参转化和corn字符串内容提取的通用方法记录
2023-12-25 11:34:06
说明
- 相信小伙伴在开发的时候,也会遇到一些动态定时任务的开发,这里提供一些传参以及cron字符串提取的通用方法
接口参数
@RestController
public class ReminderController {
@PostMapping("/reminders")
public void createReminder(
@RequestParam int second,
@RequestParam int minute,
@RequestParam int hour,
@RequestParam String dayOfMonth,
@RequestParam String month,
@RequestParam String dayOfWeek,
@RequestParam String reminderContent) {
String cronExpression = generateCronExpression(second, minute, hour, dayOfMonth, month, dayOfWeek);
// Save the cron expression and reminder content to the database using JPA or other ORM framework
// Schedule the reminder using a scheduler library like Quartz or Spring TaskScheduler
}
private String generateCronExpression(int second, int minute, int hour, String dayOfMonth, String month, String dayOfWeek) {
// Return the cron expression
// 构建cron表达式
String cronExpression = String.format("%d %d %d %s %s %s", second, minute, hour, dayOfMonth, month, dayOfWeek);
return cronExpression;
}
}
Cron表达式部分参数提取通用方法
- 星期使用数字表示,周日用1,周一用2,以此类推
- 不建议使用正则表达式,cron中存在特殊字符,很容易导致错误,不利于维护和阅读
private int extractMinute(String cronExpression) {
String[] tokens = cronExpression.split("\\s+");
return Integer.parseInt(tokens[1]); // tokens[1] 是分钟字段
}
private int extractHour(String cronExpression) {
String[] tokens = cronExpression.split("\\s+");
return Integer.parseInt(tokens[2]); // tokens[2] 是小时字段
}
private int extractDayOfWeek(String cronExpression) {
String[] tokens = cronExpression.split("\\s+");
return Integer.parseInt(tokens[5]); // tokens[5] 是星期几字段
}
// 示例用法
public static void main(String[] args) {
String cron = "0 15 15 ? * 3";
int minute = extractMinute(cron);
int hour = extractHour(cron);
int dayOfWeek = extractDayOfWeek(cron);
System.out.println("Minute: " + minute); // 输出应该是 15
System.out.println("Hour: " + hour); // 输出应该是 15
System.out.println("Day of week: " + dayOfWeek); // 输出应该是 3
}
文章来源:https://blog.csdn.net/yang2330648064/article/details/135190969
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!