> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-docs-new-agent-experience.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 定时触发器

> 本文档由 AI 自动翻译。如有任何不准确之处，请参考 [英文原版](/en/self-host/use-dify/nodes/trigger/schedule-trigger)。

<Info>
  * 触发器仅适用于工作流应用。

  * 每个工作流最多只能有一个定时触发器。
</Info>

定时触发器能够让工作流在指定的时间自动运行，适用于执行周期性重复任务，如生成每日报告或发送定时通知。

## 添加定时触发器

在工作流画布上，单击右键并选择 **添加节点** > **开始** > **定时触发器**。

## 配置定时触发器

你可以使用默认的可视化配置或 Cron 表达式来配置工作流的运行计划。

完成配置后，你将看到接下来 5 次的计划运行时间。

<Info>
  定时触发器不产生任何输出变量。但每当其触发工作流时，都会更新系统变量 `sys.timestamp`（每次工作流运行的开始时间）。
</Info>

### 使用可视化配置

适用于简单的时度、日度、周度或月度运行计划。对于周度或月度计划，可同时选择多天。

### 使用 Cron 表达式

适用于更复杂和精确的运行计划，例如在工作日的上午 9 点到下午 5 点之间每 15 分钟运行一次。

<Tip>
  你可以使用 LLM 来生成 Cron 表达式。
</Tip>

#### 标准格式

Cron 表达式是一段可用于定义工作流运行计划的字符串，由五个用空格分隔的字段组成，每个字段代表不同的时间单位。

<Note>
  确保每个字段之间有一个空格。
</Note>

```
* * * * *
| | | | |
| | | | |── 星期几（0-7 或 SUN-SAT, 0 和 7 均表示星期日）
| | | |──── 月份（1-12 或 JAN-DEC）
| | |────── 日（1-31）
| |──────── 小时（0-23）
|────────── 分钟（0-59）
```

<Info>
  当同时为 **日** 和 **星期几** 字段指定值时，触发器将在匹配 *任一* 字段的日期运行。

  例如，`1 2 3 4 4` 会在 4 月 3 日 *以及* 4 月的每个星期四触发工作流，而不仅仅是在 4 月 3 号当天刚好是星期四时触发。
</Info>

#### 特殊字符

| 字符  | 描述                                                                                                                                          | 示例                                                                                                                                    |
| :-- | :------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------ |
| `*` | 表示「每个」。                                                                                                                                     | **小时** 字段中的 `*` 表示「每个小时」。                                                                                                             |
| `,` | 分隔多个值。                                                                                                                                      | **星期几** 字段中的 `1,3,5` 表示「星期一、星期三和星期五」。                                                                                                 |
| `-` | 定义值的范围。                                                                                                                                     | **小时** 字段中的 `9-17` 表示「上午 9 点到下午 5 点」。                                                                                                 |
| `/` | 指定步进值。                                                                                                                                      | **分钟** 字段中的 `*/15` 表示「每 15 分钟」。                                                                                                       |
| `L` | 表示「最后」。 <br /><br />在 **日** 字段中，表示「月的最后一天」。<br /><br />在 **星期几** 字段中：<ul><li>单独使用时，表示「周的最后一天」。</li><li>与数字组合使用时，表示「月的最后一个指定的星期几」。</li></ul> | **日** 字段中的 `L` 表示「1 月 31 日、4 月 30 日，或非闰年的 2 月 28 日」。<br /><br />**星期几** 字段中的 `L` 表示「星期日」。<br /><br />**星期几** 字段中的 `5L` 表示「月的最后一个星期五」。 |
| `?` | 表示「任意」或「无特定值」。<br /><br />如果你为 **星期几** 字段指定了值，可以用 `?` 来忽略 **日** 字段，反之亦然。<br /><br />非必需，因为 `*` 也可实现相同效果。                                    | 若要在每个星期一运行，将 **日** 字段设为 `?` 会比设为 `*` 更精确。                                                                                             |

#### 预定义表达式

* `@yearly`：每年一次，在 1 月 1 日的凌晨 12 点运行。
* `@monthly`：每月一次，在每月第一天的凌晨 12 点运行。
* `@weekly`：每周一次，在星期日的凌晨 12 点运行。
* `@daily`：每天一次，在凌晨 12 点运行。
* `@hourly`：在每小时开始时运行。

#### 示例

| 运行时间                     | Cron 表达式                           |
| :----------------------- | :--------------------------------- |
| 工作日上午 9 点                | `0 9 * * MON-FRI` or `0 9 * * 1-5` |
| 每周三下午 2:30               | `30 14 * * WED`                    |
| 每周日凌晨 12 点               | `0 0 * * 0`                        |
| 每周二每 2 小时一次              | `0 */2 * * 2`                      |
| 每月第一天凌晨 12 点             | `0 0 1 * *`                        |
| 1 月 1 日和 6 月 1 日的中午 12 点 | `0 12 1 JAN,JUN *`                 |
| 每月最后一天下午 5 点             | `0 17 L * *`                       |
| 每月最后一个星期五晚上 10 点         | `0 22 * * 5L`                      |

## 测试定时触发器

* **运行此步骤**：定时触发器会忽略已配置的计划，立即运行。

* **测试运行**：定时触发器会等待其下一个计划运行时间。
