一、Cron表達式解析成時間
Cron表達式是一種配置定時任務執行時間的格式,常用於伺服器端、資料庫定時備份、定時發布、定時統計等場景。Cron表達式格式為:
* * * * * *
各個欄位分別代表:秒分時日月星期。例如下面的Cron表達式表示每周五下午十二點:
0 0 12 ? * FRI
如何將Cron表達式轉化為對應的時間?通過Java的Cron表達式解析庫即可實現。下面是使用Quartz Cron表達式解析庫的示例代碼:
// 創建解析器 CronExpression expression = new CronExpression("0 0 12 ? * FRI"); // 獲取下一次執行時間 Date nextExecutionTime = expression.getNextValidTimeAfter(new Date());
二、Cron表達式幾點幾分
如果我們只需要獲取Cron表達式中的幾點幾分,我們可以通過解析Cron表達式的格式來獲取。例如,對於Cron表達式「0 0 12 ? * FRI」,我們可以使用以下代碼獲取幾點幾分:
// 解析Cron表達式 CronExpression expression = new CronExpression("0 0 12 ? * FRI"); // 獲取下一次執行時間 Date nextExecutionTime = expression.getNextValidTimeAfter(new Date()); // 格式化時間獲取幾點幾分 SimpleDateFormat format = new SimpleDateFormat("HH:mm"); String hourAndMinute = format.format(nextExecutionTime);
三、Cron表達式解析器
想要解析Cron表達式,需要藉助解析器。常見的Cron表達式解析器包括Quartz和Spring等,這裡以Spring為例:
// 引入Maven依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> // 創建解析器 CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean(); factoryBean.setCronExpression("0 0 12 ? * FRI"); factoryBean.afterPropertiesSet(); CronTrigger trigger = factoryBean.getObject();
四、Cron表達式解析成中文
有時我們想要將Cron表達式中的英文星期轉化為中文,可以通過自定義轉換器來實現。以下是示例代碼:
// 創建解析器 CronExpression expression = new CronExpression("0 0 12 ? * FRI"); // 設置轉換器 expression.setDayOfWeekStartsAtOne(false); expression.setExpressionLocale(Locale.CHINA); // 獲取下一次執行時間 Date nextExecutionTime = expression.getNextValidTimeAfter(new Date());
五、常用的Cron表達式
下面列舉幾個常用的Cron表達式:
- 每天下午5點執行:0 0 17 * * ?
- 每周五下午4點30分執行:0 30 16 ? * FRI
- 每兩個小時執行一次:0 0 */2 ? * *
- 每天凌晨1點半執行:0 30 1 * * ?
六、Cron表達式每5分鐘一次
要實現Cron表達式每5分鐘一次的定時任務,可以使用以下表達式:
*/5 * * * * ?
七、Cron表達式解析在線
在線解析Cron表達式的網站有很多,例如cron.qqe2.com、cron-tab.com等,用戶只需要輸入Cron表達式即可獲取對應時間。以下是cron-tab.com的示例:
https://www.cron-tab.com/analyze/?crontab=0+0+12+%3F+*+FRI
八、Cron表達式解析C實現
Cron表達式解析C實現可以參考cron-parser(https://github.com/staticlibs/ccronexpr),通過該庫可以實現C語言的Cron表達式解析。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239585.html