一、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
微信掃一掃
支付寶掃一掃