# now 脚本和图表功能

在 Qlik Cloud 中，此函数以 UTC 格式返回一个时间戳。函数以 TimeStamp 系统变量格式返回值。timer\_mode 默认值为 1。

提示注释

在 Qlik Cloud 中，now() 使用 UTC。如果您需要在其他时区返回时间戳，请考虑下面的替代方案：

* 将 now() 函数包装于使用 converttolocaltime() 函数的表达式中。例如： `converttolocaltime(now(), 'Stockholm')`

* 将 localtime() 函数用作独立表达式。例如： `LocalTime('Stockholm')`

语法：

now([ timer\_mode])

返回数据类型： 双

`now()` 函数可以在加载脚本或图表对象中使用。

参数

| 参数 | 描述 |
| --- | --- |
| timer\_mode | 可以具有以下值：<br><br>0（最后完成的数据加载的时间）<br>1（函数调用时的时间）<br>2（应用程序打开的时间）<br><br>信息注释如果在数据加载脚本中使用此函数，则 timer\_mode=0 将会生成最后完成数据加载的时间，而 timer\_mode=1 将会提供当前数据加载的函数调用时间。 |

提示注释`now()` 函数具有高性能影响，如果在表的表达式中使用该函数，则可能会导致滚动问题。当不是绝对必要使用它的时候，我们建议使用 `today()` 函数。如果布局中需要使用 `now()`，我们建议在可能的情况下使用非默认设置 `now(0)` 或 `now(2)`，因为它们不需要不断重新计算。

## 适合使用 now 的情况

`now()` 函数通常用作表达式中的组件。例如，它可以用于计算产品生命周期中剩余的时间。当表达式需要使用一天的一小部分时，将使用 `now()` 函数代替 `today()` 函数。

下表提供了 `now()` 函数返回的结果的解释，给出了 `timer_mode` 参数的不同值：

函数示例

| timer\_mode 值 | 结果（如果在加载脚本中使用） | 在图表对象中使用时的结果 |
| --- | --- | --- |
| 0 | 以 `TimeStamp` 系统变量格式返回最近一次数据重新加载之前最后一次成功数据重新加载的时间戳。 | 以 `TimeStamp` 系统变量格式返回最新数据重新加载的时间戳。 |
| 1 | 以 `TimeStamp` 系统变量格式返回最新数据重新加载的时间戳。 | 以 `TimeStamp` 系统变量格式返回函数调用的时间戳。 |
| 2 | 以 `TimeStamp` 系统变量格式返回应用程序中用户会话开始的时间戳。除非用户重新加载脚本，否则不会更新该脚本。 | 以 `TimeStamp` 系统变量格式返回应用程序中用户会话开始的时间戳。一旦新会话开始或重新加载应用程序中的数据，将刷新此属性。 |

## 区域设置

除非另有规定，本主题中的示例使用以下日期格式：MM/DD/YYYY。日期格式已经在数据加载脚本中的 `SET DateFormat` 语句中指定。由于区域设置和其他因素，系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者，您可以更改加载脚本中的格式以匹配这些示例。有关更多信息，请参阅[修改应用程序和脚本的区域设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud 用户界面中显示的语言无关。Qlik Cloud 将以与您使用的浏览器相同的语言显示。

如果你是应用程序创建者，你可以为自己创建的应用程序设置默认区域。有关更多信息，请参阅[设置 Qlik Cloud Analytics 中创建应用程序和脚本所用的首选区域设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)。

## 示例 1 – 使用加载脚本生成对象

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/now.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新选项卡。

本例使用 `now()` 函数创建三个变量。每个变量都使用其中一个 `timer_mode` 选项来演示其效果。

为了演示变量的用途，请重新加载脚本，然后在一段短时间后再次重新加载脚本。这将导致 `now(0)` 和 `now(1)` 变量显示不同的值，从而正确地显示它们的用途。

加载脚本

```
LET vPreviousDataLoad = now(0);
LET vCurrentDataLoad = now(1);
LET vApplicationOpened = now(2);
```

结果

第二次加载数据后，使用下面的说明创建三个文本框。

首先，为先前加载的数据创建一个文本框。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 将以下度量值添加到对象：

   `=vPreviousDataLoad`

3. 在外观下，选择 Show titles 并向对象添加标题“上次重新加载时间”。

接下来，为当前正在加载的数据创建一个文本框。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 将以下度量值添加到对象：

   `=vCurrentDataLoad`

3. 在外观下，选择 Show titles 并向对象添加标题“当前重新加载时间”。

创建最后一个文本框，以显示用户在应用程序中的会话何时启动。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 将以下度量值添加到对象：

   `=vApplicationOpened`

3. 在外观下，选择 Show titles 并向对象添加标题“用户会话已开始”。

`now()` 加载脚本变量

`now()` 加载脚本变量

`now()`now() 加载脚本变量 ![图中显示了使用 now() 函数通过加载脚本加载变量后，三个生成的文本框中的每个文本框的外观。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-now-example-load-script.png)

上图显示了每个已创建变量的示例值。例如，这些值可以如下所示：

* 上次重新加载时间：6/22/2022 8:54:03 AM

* 当前重新加载时间：6/22/2022 9:02:08 AM

* 用户会话开始时间：6/22/2022 8:40:40 AM

## 示例 2 –不使用加载脚本生成对象

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/now.htm)

#### 加载脚本和图表表达式

概述

在本例中，您将使用 `now()` 函数创建三个图表对象，而无需将任何变量或数据加载到应用程序中。每个图表对象都使用其中一个 `timer_mode` 选项来演示其效果。

此示例没有加载脚本。

执行以下操作：

1. 打开数据加载编辑器。

2. 在不更改现有加载脚本的情况下，单击加载数据。

3. 短时间后，再次加载脚本。

结果

第二次加载数据后，创建三个文本框。

首先，为最新数据重新加载创建一个文本框。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 添加以下度量：

   `=now(0)`

3. 在外观下，选择显示标题并将标题“最新数据重新加载”添加到对象。

接下来，创建一个文本框以显示当前时间。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 添加以下度量：

   `=now(1)`

3. 在外观下，选择显示标题并向对象添加标题“当前时间”。

创建最后一个文本框，以显示用户在应用程序中的会话何时启动。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 添加以下度量：

   `=now(2)`

3. 在外观下，选择显示标题并向对象添加标题“用户会话开始”。

`now()` 图表对象示例

`now()` 图表对象示例

`now()`now() 图表对象示例 ![图中显示了使用 now() 函数仅创建图表对象后，三个生成的文本框中的每个文本框的外观，没有数据加载到应用程序中。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-now-example-no-data-loaded.png)

上图显示了每个已创建对象的示例值。例如，这些值可以如下所示：

* 最后重新加载数据时间：6/22/2022 9:02:08 AM

* 当前时间：6/22/2022 9:25:16 AM

* 用户会话开始时间：6/22/2022 8:40:40 AM

“最新数据重新加载”图表对象使用值为 0 的 `timer_mode` 。这将返回上次成功重新加载数据的时间戳。

“当前时间”图表对象使用为 1 的 `timer_mode` 值。这将根据系统时钟返回当前时间。如果刷新了工作表或对象，则将更新此值。

“用户会话开始”图表对象使用值为 2 的 `timer_mode`。这将返回应用程序打开和用户会话开始的时间戳。

## 示例 3 – 场景

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/now.htm)

#### 加载脚本和图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 由加密货币挖掘操作的库存组成的数据集，该数据集加载到名为 `Inventory` 的表中。

* 具有以下字段的数据：`id`、`purchase_date` 和 `wph`（瓦特/小时）。

用户想要一个表格，按 `id` 显示每个采矿平台在该月迄今为止的总成本（以功耗为单位）。

每当刷新图表对象时，此值应更新。目前的电力成本为每千瓦时 0.0678 美元。

加载脚本

```
SET DateFormat='MM/DD/YYYY';

Inventory:
Load
*
Inline 
[
id,purchase_date,wph
8188,1/7/2022,1123
8189,1/19/2022,1432
8190,2/28/2022,1227
8191,2/5/2022,1322
8192,3/16/2022,1273
8193,4/1/2022,1123
8194,5/7/2022,1342
8195,5/16/2022,2342
8196,6/15/2022,1231
8197,6/26/2022,1231
8198,7/9/2022,1123
8199,7/22/2022,1212
8200,7/23/2022,1223
8201,7/27/2022,1232
8202,8/2/2022,1232
8203,8/8/2022,1211
8204,8/19/2022,1243
8205,9/26/2022,1322
8206,10/14/2022,1133
8207,10/29/2022,1231
];
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度： `id`。

创建以下度量：

`=(now(1)-monthstart(now(1)))*24*wph/1000*0.0678`

如果图表对象在 2022 年 6 月 22 日上午 10:39:05 刷新，它将返回以下结果：

结果表

| id | =(now(1)-monthstart(now(1)))\*24\*wph/1000\*0.0678 |
| --- | --- |
| 8188 | $39.18 |
| 8189 | $49.97 |
| 8190 | $42.81 |
| 8191 | $46.13 |
| 8192 | $44.42 |
| 8193 | $39.18 |
| 8194 | $46.83 |
| 8195 | $81.72 |
| 8196 | $42.95 |
| 8197 | $42.95 |
| 8198 | $39.18 |
| 8199 | $42.29 |
| 8200 | $42.67 |
| 8201 | $42.99 |
| 8202 | $42.99 |
| 8203 | $42.25 |
| 8204 | $43.37 |
| 8205 | $46.13 |
| 8206 | $39.53 |

用户希望每次刷新对象时都刷新对象结果。因此，为表达式中的 `now()` 函数实例提供 `timer_mode` 参数。通过将 `now()` 函数用作 `monthstart()` 函数中的时间戳参数，从 `now()` 函数标识的当前时间中减去月份开始的时间戳。这提供了本月迄今为止的总时间，以天为单位。

该值乘以 24（一天中的小时数），然后乘以 `wph` 字段中的值。

将每小时瓦特转换为千瓦时，结果除以 1000，最后乘以所提供的千瓦时费率。

## 了解详情

* [localtime 脚本和图表功能](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/localtime.htm#Bar)

* [converttolocaltime 脚本和图表功能](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/converttolocaltime.htm#Bar)