# cron表达式

## cron表达式

包含6或7个参数，代表不同的时间单位和取值范围：

* 秒（0-59）
* 分（0-59）
* 时（0-23）
* 日（1-31)
* 月（1-12 或 JAN-DEC）
* 星期几（0-6 或 SUN-SAT）
* 年（可选，1970-2099）

其中日和星期几一般不同时指定值，因为可能会冲突，一个指定值后另一个会用`?`来表示忽略，即不指定具体值。
<!--more-->
符号`*`表示任意值，`/`表示间隔，`,`用于指定多个值，`-`表示取值范围，`#`用于指定第几个星期几，`L`表示最后一天（Last）。

`W`表示距离指定日期最近的工作日（Weekday），如果当天不是工作日则提前到最近的工作日。`W`只能用于日字段上。

`C`表示距离指定日期最近的工作日（Calendar），如果当天不是工作日则延后到最近的工作日。`C`可以用于日、月、星期字段上。

例子如下：
```
0 0 0 * * *：表示每天零点执行一次。
0 0/30 10-12 * * 3#1：表示每个月的第一个星期三早上10点到12点每隔半小时执行一次。
0 0 2,4,6 L * ?：表示每个月最后一天的2、4、6点执行一次。
0 0 0 10W * ?：表示每个月的10号零点执行一次，如果10号是周末，则提前到最近的工作日即9号。
0 0 0 10C * ?：表示每个月的10号零点执行一次，如果10号是周末，则延后到最近的工作日即11号。
```

## 参考链接

* [cron表达式详细讲](https://baijiahao.baidu.com/s?id=1761866232950907868&wfr=spider&for=pc&searchword=cron%E8%A1%A8%E8%BE%BE%E5%BC%8F)