# 日期处理器

执行与日期有关的操作。

通过日期处理器，您可以对与日期、时间和时间戳相关的字段应用各种功能。可用函数可用于计算、清理、修改或转换日期。

## 使用

日期处理器需要一个输入流，只能生成一个输出流。

## 属性

配置为按日期工作的属性。

信息注释本部分中列出的属性是该处理器大多数功能的默认属性。根据您选择的函数，可能需要定义其他属性。

配置

| 属性 | 配置 |
| --- | --- |
| 函数名称 | <ul> <li> <p><span>转换为时间戳</span>：使用可从列表中选择或手动指定的格式将字符串解释为时间戳。如果选择<span>自动</span>作为输入格式，该函数将尝试从一组最常用的格式中检测格式。 如果无法将其解释为时间戳，则将其设置<span>为空</span>。</p> </li> <li> <p><span>转换为日期</span>：使用可从列表中选择或手动指定的格式将字符串解释为日期。如果选择<span>自动</span>作为输入格式，该函数将尝试从一组最常用的格式中检测格式。 如果无法将其解释为日期，则将其设置<span>为空</span>。</p> </li> <li> <p><span>转换为时间</span>：使用可从列表中选择或手动指定的格式将字符串解释为时间。如果选择<span>自动</span>作为输入格式，该函数将尝试从一组最常用的格式中检测格式。 如果无法将其解释为时间，则将其设置<span>为空</span>。</p> </li> <li> <p><span>用部件创建时间戳</span>：通过串联其他字段的数字部分或常数值来创建新的时间戳字段。</p> </li> <li> <p><span>用部件创建日期</span>：通过串联其他字段的数字部分或常量值来创建新的日期字段。</p> </li> <li> <p><span>从部件创建时间</span>：通过连接其他字段或常数值中的数字部件来创建新的时间字段。</p> </li> <li> <p><span>格式化日期</span>：更改日期字段中使用的日期格式。</p> </li> <li> <p><span>计算日期差</span>：对于给定的时间部分单位，计算已计算字段中的日期与所选日期之间的时间。计算时，首先将日期截断到指定的日期或时间部分，然后以整数形式返回两者之间的差值。</p> </li> <li> <p><span>添加持续时间</span>：为日期添加特定量的时间。</p> </li> <li> <p><span>比较日期</span>：将此字段与另一个字段或常量进行比较</p> </li> <li> <p><span>提取日期部分</span>：创建包含年、月、季、日、时、分、秒等的字段。</p> </li> <li> <p><span>截断日期</span>：删除部分日期。</p> </li> </ul> |
| 要处理的字段 | 在列表中选择要应用函数的字段。 |
| 创建新字段 | 启用此选项可在应用函数后创建新字段。如果不启用此选项，则将保留并修改现有字段。 |
| 重命名新字段 | 为新创建的字段指定自定义名称。 |

要重命名处理器或编辑其描述，请将鼠标指向属性面板中要更改的名称或描述，然后单击 the 编辑 icon 图标。

## 有关如何使用日期的其他信息

通常所说的日期有三种不同的格式：

* 时间，标志着一天的时间

* 日期，标志着一个特定的日子

* 时间戳，由日期和时间组成

在大多数情况下，日期是在数据流中自动识别的。不过，在关注以下情况时，您应使用转换为功能之一将日期正确引入系统：

* 您的日期格式无法自动识别。

* 您要根据创建数据流的用户的本地化情况，将它们置于与数据流相同的日期格式中。

* 您要确保它们以特定格式设置。否则，无法识别的日期格式将被设置为空。

## 限制

* 在某些情况下，由于引擎的限制，日期格式化无法正常工作。这适用于格式化函数和转换为函数。这只会在更新原始输入字段时发生，而不会在创建新字段时发生。

* 由于引擎的限制，当从 Excel 等本机支持日期的格式加载日期时，并不总能设置该日期的格式。

## 预定义日期格式

本数据表列出了数据流中预定义的不同格式，但手动输入时也支持其他格式。有关手动定义格式的更多信息，请参阅[数字和时间格式说明](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Introduction/conventions-number-time-formats.htm#anchor-3)。

| 格式 | 类型 | 示例 |
| --- | --- | --- |
| 年年年年-月月-日日 | 日期 | 1999-03-22 |
| 年年年年月月日日 | 日期 | 19990322 |
| 月/日/年年年年 | 日期 | 3/22/1999 |
| 月/日/年 | 日期 | 3/22/99 |
| 月月/日日/年年 | 日期 | 03/22/99 |
| 月月月 日, 年年年年 | 日期 | Mar 22, 1999 |
| 月月月月 日, 年年年年 | 日期 | March 22, 1999 |
| 年年年年-月月-日日 时时:分分 | 时间戳 | 1999-03-22 05:06 |
| 年年年年-月月-日日 时时:分分:秒秒 | 时间戳 | 1999-03-22 05:06:07 |
| 年年年年-月月-日日T时时:分分 | 时间戳 | 1999-03-22T05:06 |
| 年年年年-月月-日日T时时:分分:秒秒 | 时间戳 | 1999-03-22T05:06:07 |
| 月/日/年年年年 时时:分分 tt | 时间戳 | 3/22/1999 05:06 AM |
| 月/日/年年 时时:分分 tt | 时间戳 | 3/22/99 05:06 AM |
| 月月/日日/年年 时时:分分 tt | 时间戳 | 03/22/99 05:06 AM |
| 月/日/年年年年 时时:分分:秒秒 tt | 时间戳 | 3/22/1999 05:06:07 AM |
| 月/日/年年 时时:分分:秒秒 tt | 时间戳 | 3/22/99 05:06:07 AM |
| 月月/日日/年年 时时:分分:秒秒 tt | 时间戳 | 03/22/99 05:06:07 AM |
| 月月月 日, 年年年年 时:分分:秒秒 tt | 时间戳 | Mar 22, 1999 5:06:07 AM |
| 周周周周, 月月月月 日, 年年年年 时:分分:秒秒 tt | 时间戳 | Monday, March 22, 1999 5:06:07 AM |
| 时时:分分 | 时间 | 05:06 |
| 时时:分分:秒秒 | 时间 | 05:06:07 |
| 时时:分分 tt | 时间 | 05:06 AM |
| 时时:分分:秒秒 tt | 时间 | 05:06:07 AM |

## 示例：转换和处理日期

该场景展示了如何准备一个包含潜在客户信息的数据集，以训练一个旨在识别哪些潜在客户可能成为客户的 ML 实验。在可用信息中，我们有几个包含日期的字段，如 FirstContactDate 和 TrialDate。

![包括日期在内的候选者信息数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/dates_convert_example_1.png)

第一步是确保两个日期字段使用通用格式。在 FirstContactDate 和 TrialDate 字段上使用第一个日期处理器和转换为日期函数。这两个字段现在使用相同的“日/月月/年年年年”格式。

使用第二个日期处理器，使用计算日期差异来显示首次联系与开始试用之间的天数。

之后，一个 Fork 处理器将根据结果数据生成第一个输出，而第二个分支将使用第三个日期处理器。有了提取日期部分函数，您就可以只保留 FirstContactDate 字段的年初至今和月份信息，使其更易于读取和在未来的 ML 实验中使用。

经过聚合操作后，就可以运行数据流来训练你的模型了，最终的数据流看起来如下：

![日期格式正确的数据流](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/dates_convert_example_2.png)

## 示例：计算日期差

本例中用作数据源的数据包含订单参考，包括订单日期和发货日期。

![包含订单和装运日期的数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/dates_example_1.png)

要了解发货所需的延迟时间，您可以使用日期处理器计算下单到发货之间的时间。

在处理器属性中，选择计算日期差异作为函数，日作为时间单位。选择订单日期作为要处理的字段，选择发货日期作为已计算时差的其他字段。输入要创建的新字段的名称，设置目标并运行数据流。

![计算时差的日期处理器](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/dates_example_2.png)

该数据流的目标将包括一列新的列，列中包含发货订单所需的天数，您可以在分析中使用该列。

## 视频摘要

[查看视频短片](https://play.vidyard.com/K6R24fJuZAvLCrnNPmRrkW)