# now — функция скриптa и диаграммы

Эта функция возвращает метку текущего времени. Эта функция возвращает значения в формате системной переменной TimeStamp. Значение timer\_mode по умолчанию — 1.

Синтаксис:

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()` рекомендуется использовать вместо функции `today()`, когда в выражении требуется учитывать часть дня.

В следующей таблице приводится объяснение результата, возвращаемого функцией `now()`, в зависимости от различных значений аргумента `timer_mode`:

Примеры функции

| Значение timer\_mode | Результат при использовании в скрипте загрузки | Результат при использовании в объекте диаграммы |
| --- | --- | --- |
| 0 | Возвращает метку времени в формате системной переменной `TimeStamp` для даты последней успешной перезагрузки, предшествующей самой последней перезагрузке данных. | Возвращает метку времени в формате системной переменной `TimeStamp` для даты последней перезагрузки данных. |
| 1 | Возвращает метку времени в формате системной переменной `TimeStamp` для самой последней перезагрузки данных. | Возвращает метку времени вызова функции в формате системной переменной `TimeStamp`. |
| 2 | Возвращает метку времени в формате системной переменной `TimeStamp` для начала сеанса пользователя в приложении. Это значение не будет обновляться, если пользователь не перезагрузит скрипт. | Возвращает метку времени в формате системной переменной `TimeStamp` для начала сеанса пользователя в приложении. Это значение будет обновляться в случае начала нового сеанса или перезагрузки данных в приложение. |

## Региональные настройки

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе `SET DateFormat` скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.

Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.

## Пример 1. Создание объектов с использованием скрипта загрузки

[](https://help.qlik.com/en-US/sense/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/ru-RU/sense/November2024/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/sense/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/ru-RU/sense/November2024/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

Объект диаграммы «Последняя перезагрузка данных» использует значение `timer_mode` = 0. В результате этого возвращается метка времени для последней успешной перезагрузки данных.

Объект диаграммы «Текущее время» использует значение `timer_mode` = 1. В результате этого возвращается текущее время по системным часам. В случае обновления листа или объекта это значение обновляется.

Объект диаграммы «Начало сеанса пользователя» использует `timer_mode` = 2. В результате этого возвращается метка времени, когда пользователь открыл приложение и начал сеанс.

## Пример 3. Сценарий

[](https://help.qlik.com/en-US/sense/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`

Если объект диаграммы был обновлен в 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 |

Пользователю требуется, чтобы результаты объекта обновлялись каждый раз при обновлении самого объекта. Поэтому аргумент `timer_mode` предоставлен для экземпляров функции `now()` в приложении. Метка времени для начала месяца, определенного с использованием функции `now()` в качестве аргумента метки времени в функции `monthstart()`, вычитается из текущего времени, определенного с помощью функции `now()`. Это дает общее количество прошедшего времени в этом месяце, выраженное в днях.

Это значение умножается на 24 (количество часов в сутках), а затем на значение в поле `wph`.

Чтобы преобразовать значение из Вт⋅ч в кВт⋅ч, результат делится на 1000 перед заключительным умножением на тариф оплаты за кВт⋅ч.