# Cron 表达式解释器

用通俗语言解读 cron 表达式,查看任意时区的下几次运行时间,并整理成标准格式。

https://codeknife.dev/zh/cron-jieshi/

## 它能做什么

用通俗语言解读 cron 表达式，查看它在任意时区的下几次运行时间，并把它整理成标准格式。它支持标准的五字段 cron，也支持带秒的 Quartz 或 Spring 方言。一切都在你的浏览器中完成。

## 如何使用

1. 输入或粘贴一个表达式，例如 `*/15 9-17 * * MON-FRI`。`@daily` 和 `@hourly` 这样的简写也能识别。光标所在的字段会高亮，并在下方解释。
2. 选择方言：**标准（5 个字段）**，或 **Quartz / Spring**（六或七个字段，以秒开头）。
3. 选择用来解读计划的时区，以及要列出多少次接下来的运行。
4. 在输入框上方用文字阅读描述，下方是接下来的运行时间。并非所有 cron 都认识的写法会以提示指出。
5. 点击**随机**或某个计划标签作为起点，或切换到**多行**，逐行检查表达式。

## 示例

```
@daily                  →  0 0 * * *
*/15 9-17 * * MON-FRI   →  每 15 分钟一次，上午 09:00 至下午 05:59，周一至周五
```

一个 Quartz 表达式，表示每个月第二个星期一的中午 12 点：

```
0 0 12 ? * MON#2
```

## 须知

- 五个字段依次是分钟、小时、日期、月份和星期。
- 标准 cron 把星期日算作 0。Quartz 和 Spring 把它算作 1，并且要求日期或星期字段中有一个写成 `?`。
- Cron 按它所在的机器或调度器的时钟运行，所以请选择那个时区，通常是 UTC。
- 支持 Quartz 的 `L`、`W` 和 `#`（最后一天、最近的工作日、第 n 个星期几）。
- 无法读取的字段会变红，提示信息会指出是哪一个。
- 同时指定几号和星期几时，只要其中一个匹配，任务就会运行，而不是两者都匹配才运行。`@reboot` 没有可列出的计划，标准 cron 中用 `7` 表示星期日，或使用 Quartz 字符 `?`、`L`、`W`、`#`，都会被提示。

## 什么是 cron 表达式?

Cron 表达式用五个字段说明任务何时运行:分钟、小时、几号、月份和星期几。* 表示每个值,*/15 表示每 15 个,1-5 表示范围,1,15 表示列表。Quartz 和 Spring 会在前面加一个秒字段,有时在末尾加年份,并支持 L、W、# 等扩展。

## 常见问题

### 运行时间用的是哪个时区?

你选择的那个。Cron 按它所在机器或调度器的时钟运行,所以请选择那个时区(通常是 UTC)来查看真实运行时间。

### 标准和 Quartz 有什么区别?

标准 cron 有五个字段,星期天记为 0。Quartz 和 Spring 有六或七个字段,以秒开头,星期天记为 1,并且“日”或“星期”字段中必须有一个是 ?。

### 这个工具会把我的表达式发送到别处吗?

不会。说明和运行时间都在你的浏览器中计算。你输入的内容不会发送到我们的服务器。