# 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-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。

若您是應用程式建立者，可以為您建立的應用程式設定預設地區。如需詳細資訊，請參閱[Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定](https://help.qlik.com/zh-TW/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 並將標題「Previous Reload Time」(先前載入時間) 新增至物件。

接下來，為目前正在載入的資料建立文字方塊。

請執行下列動作：

1. 使用文字與影像圖表物件，建立文字方塊。

2. 將下列量值新增至物件：

   `=vCurrentDataLoad`

3. 在外觀之下，選取 Show titles 並將標題「Current Reload Time」(目前載入時間) 新增至物件。

建立最後一個文字方塊，以顯示應用程式中的使用者工作階段何時開始。

請執行下列動作：

1. 使用文字與影像圖表物件，建立文字方塊。

2. 將下列量值新增至物件：

   `=vApplicationOpened`

3. 在外觀之下，選取 Show titles 並將標題「User Session Started」(使用者工作階段已開始) 新增至物件。

`now()` 載入指令碼變數

`now()` 載入指令碼變數

`now()`now() 載入指令碼變數 ![圖表顯示三個產生的文字方塊在使用 now() 函數，以便透過載入指令碼載入變數後的個別外觀。](https://help.qlik.com/zh-TW/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-TW/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` 針對耗電量顯示每個採礦設備在該月至今產生的總成本。

此值應在每次圖表物件重新整理時更新。目前的電力成本為每 kWH $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`

若圖表物件於 6/22/2022 10:39:05 AM 重新整理，會傳回下列結果：

結果表格

| 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，再乘以提供的 kWH 率。

## 瞭解更多資訊

* [localtime 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/localtime.htm#Bar)

* [converttolocaltime 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/converttolocaltime.htm#Bar)