# 时间延迟

**时间延迟**元素让用户等待指定的时间。延迟结束后，他们会进入下一步。延迟可以是一个固定的时间段、一个特定的时间或日期，也可以基于一个 Tag 值或 Event 属性。

## 延迟选项

### 固定时长

当设置为固定时间段时，时间延迟元素仅在指定的时间过去后才允许用户继续他们的 Journey。

例如，如果延迟设置为 8 小时，到达此 Journey 元素的用户将等待 8 小时，然后才会进入下一步。

<Aside type="note">
请注意，延迟期**不能超过 30 天**。
</Aside>

<img src="/journey-elements-README-32.webp" alt="时间延迟元素配置为固定时长，显示用户在继续前等待指定的时间段。"/>

### 特定时间

您可以设置一个确切的时间让用户继续前进。到达延迟元素的用户将在指定的时间继续。

<Aside type="caution">
特定时间选项是根据用户的时区设置的。
</Aside>

例如，如果一个用户在清晨到达一个延迟元素，而您已将延迟设置为等到下午 5:30，那么这些用户将根据其设备的时区在下午 5:30 继续前往下一个 Journey 节点。

<Aside type="note">
如果您指定的时间对于某些时区的用户来说已经过去，那么这些用户将等到第二天的同一确切时间。
</Aside>

<img src="/journey-elements-README-33.webp" alt="用户的 Journey 被时间延迟元素暂停，直到达到其本地时区的特定时间。"/>

### 日期

如果您想在特定日期设置一次性营销活动（例如，发送黑色星期五通知），请选择一个特定的日期和时间来继续 Journey。

<Aside type="caution">
请记住，日期和时间是根据用户的时区设置的。如果您指定的日期和时间对于某些时区的用户来说已经过去，他们将立即进入下一个 Journey 元素。
</Aside>

<img src="/journey-elements-README-34.webp" alt="一个设置为特定日期的时间延迟元素，非常适合安排像假日促销这样的一次性营销活动。"/>

### 星期几

如果您希望用户仅在一周中的特定某天移动到下一个 Journey 节点，请选择**星期几**选项并设置所需的日期和时间。

<Aside type="caution">
请记住，日期和时间是根据用户的时区设置的。如果您指定的日期和时间对于某些时区的用户来说已经过去，他们将等到下周的同一天和时间。
</Aside>

<img src="/journey-elements-README-35.webp" alt="时间延迟元素配置为一周中的特定某天，允许设置每周重复的计划。"/>

### 基于用户或事件数据的延迟

当等待时间应来自 Tag、Event 属性或从 [**Webhook**](#use-a-date-from-a-webhook-response) 响应中映射的值时，请使用此选项。

1. 在**时间延迟选项**中，选择**基于用户/事件数据**。
2. 在**从...获取日期**下，选择**用户资料**以使用 Tag，或选择**事件**以使用事件属性或来自 Webhook 响应的值。
3. 如果您选择了**用户资料**，请选择包含日期的 Tag。
4. 如果您选择了**事件**，请选择包含日期的事件和属性。对于 Webhook 映射的值，请参阅下文的[使用来自 Webhook 响应的日期](#use-a-date-from-a-webhook-response)。
5. 设置偏移量：**之前**、**之后**或**当天**，然后输入天数。

<img src="/journey-elements-README-36.webp" alt="基于用户或事件数据的时间延迟，可在 Customer Journey 中实现动态和个性化的调度。"/>


<Aside type="note" title="日期格式要求">

* **Tags：** 使用[日期类型](/zh/product/audience-data-and-segmentation/user-data-tags/tags#types-of-tags)的 Tag，并以 `2006-01-02T15:04:05` 格式（**UTC** 时间）[设置其值](/zh/developer/api-reference/device-api#settags)。
* **Events：** [创建 Event](/zh/product/audience-data-and-segmentation/events#1-create-events-in-pushwoosh-control-panel)，[添加日期属性](/zh/product/audience-data-and-segmentation/events#2-set-attributes)，并以 `2006-01-02 15:04:05` 格式发送 [/postEvent](/zh/developer/api-reference/user-centric-api#postevent) 请求。

</Aside>


<Aside type="caution">
如果用户到达此元素时**日期或时间已过**，他们将退出 Journey。
</Aside>

#### 使用来自 Webhook 响应的日期

如果 Journey 前面的 [**Webhook**](/zh/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) 元素配置了**响应映射**，则映射的属性在**事件**下可用。

1. 在**时间延迟选项**中，选择**基于用户/事件数据**。
2. 在**从...获取日期**下，选择**事件**。
3. 在**事件**中，按您为其指定的名称选择 Webhook 步骤（例如，`Get appointment details`）。
4. 在**事件值**中，选择持有日期的映射属性（例如，`visit_date`）。
5. 设置偏移量（例如，**之前** `2` **天**）。

<img src="/journey-elements-time-delay-1.webp" alt="时间延迟设置为事件 Webhook，使用 visit_date 和 2 天前的偏移量" />

该值必须遵循与 Tags 和 Events 相同的日期格式规则（请参阅上面的**日期格式要求**）。

<Aside type="caution">
如果映射的值缺失或不是有效日期，用户将在此步骤因错误而退出 Journey。在启动前运行[**测试 Webhook**](/zh/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) 以确认您的映射。
</Aside>


### 当日期在过去或为空时拆分分支

要让不满足延迟条件的用户继续，请启用**如果日期在过去或日期为空则拆分到分支**。流程将拆分为**在未来**和**在过去**。对于 Tag 值、Event 属性或 Webhook 映射日期与延迟不匹配的用户，请使用**在过去**分支。您可以在该分支上添加其他元素（例如，另一个**时间延迟**、**条件拆分**、**等待触发器**或消息）。

例如，您使用预约事件的日期属性设置了预约前 2 天的提醒。如果预约在明天，用户将不满足提前 2 天的条件并退出，除非您启用分支拆分。

### 当预约日期在 Journey 中途更改时

如果用户已在 Journey 中时，Tag 或 Event 属性中的日期发生更改，**时间延迟**设置将保持用户到达该元素时的状态。

当用户经常重新安排预约、配送或类似事件时，请考虑创建多个 Journey。

例如，在带有 DateTime 属性的 `AppointmentCreated` 事件上启动一个 Journey（一个提醒 Journey）。使用**基于用户/事件数据**在访问前 2 天设置一个推送提醒。要处理重新安排：

1. 创建一个 `AppointmentChanged` 事件。
2. 在提醒 Journey 中，将 `AppointmentChanged` 设置为转化目标，以便重新安排的用户退出 Journey。
3. 创建一个在 `AppointmentChanged` 上启动的新 Journey，以提醒更新了访问日期和时间的用户。