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

Эта функция возвращает текущую дату. Эта функция возвращает значения в формате системной переменной `DateFormat`.

Синтаксис:

today([ timer\_mode])

Возвращаемые типы данных: двойное значение

Функцию `today()` можно использовать в скрипте загрузки или в объектах диаграммы.

Значение `timer_mode` по умолчанию — 1.

Аргументы

| Аргумент | Описание |
| --- | --- |
| timer\_mode | Может иметь следующие значения:<br><br>0 (день последней завершенной загрузки данных)<br>1 (день вызова функции)<br>2 (день открытия приложения)<br><br>Примечание к информацииЕсли функция используется в скрипте загрузки данных, функция timer\_mode=0 выдает день последней завершенной загрузки данных, а timer\_mode=1 выдает день текущей загрузки данных. |

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

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

## Когда это следует использовать

Функция `today()` часто используется как компонент внутри выражения. Например, можно ее использовать, если требуется рассчитать проценты, накопленные в течение месяца до текущей даты.

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

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

Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе `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/today.htm)

#### Скрипт загрузки и результаты

Обзор

Следующий пример создает три переменные с использованием функции `today()`. Каждая переменная использует один из параметров `timer_mode` для демонстрации эффекта.

Чтобы продемонстрировать назначение переменных, перезагрузите скрипт, а затем через 24 часа выполните вторую перезагрузку. Это приведет к тому, что переменные `today(0)` и `today(1)` будут показывать разные значения, тем самым правильно демонстрируя свое назначение.

Скрипт загрузки

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

Результаты

После загрузки данных во второй раз создайте три текстовых поля, следуя приведенным ниже инструкциям.

Сначала создайте текстовое поле для данных, загруженных ранее.

Выполните следующие действия.

1. Создайте текстовое поле, используя объект диаграммы Текст и изображение.

2. Добавьте в объект следующую меру:

   `=vPreviousDataLoad`

3. В области Вид выберите Show titles и добавьте в объект заголовок «Время предыдущей загрузки».

Затем создайте текстовое поле для данных, которые загружены в данный момент.

Выполните следующие действия.

1. Создайте текстовое поле, используя объект диаграммы Текст и изображение.

2. Добавьте в объект следующую меру:

   `=vCurrentDataLoad`

3. В области Вид выберите Show titles и добавьте в объект заголовок «Время текущей загрузки».

Создайте последнее текстовое поле, в котором будет отображаться время начала сеанса пользователя в приложении.

Выполните следующие действия.

1. Создайте текстовое поле, используя объект диаграммы Текст и изображение.

2. Добавьте в объект следующую меру:

   `=vApplicationOpened`

3. В области Вид выберите Show titles и добавьте в объект заголовок «Начало сеанса пользователя».

Диаграмма с переменными, созданными с использованием функции `today()` в скрипте загрузки

Диаграмма с переменными, созданными с использованием функции `today()` в скрипте загрузки

Диаграмма с переменными, созданными с использованием функции `today()`today() в скрипте загрузки![Диаграмма, демонстрирующая, как может выглядеть каждое из созданных текстовых полей после использования функции today() для загрузки переменных через скрипт загрузки.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-today-example-variables-script.png)

В приведенной выше диаграмме показаны примерные значения для каждой из созданных переменных. Например, это могут быть следующие значения:

* Время предыдущей перезагрузки: 6/22/2022

* Время текущей перезагрузки: 06/23/2022

* Начало сеанса пользователя: 06/23/2022

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

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

#### Скрипт загрузки и выражение диаграммы

Обзор

Следующий пример создает три объекта диаграммы с использованием функции `today()`. Каждый объект диаграммы использует один из параметров `timer_mode` для демонстрации своего эффекта.

Для этого примера не предусмотрен скрипт загрузки.

Результаты

После загрузки данных во второй раз создайте три текстовых поля.

Сначала создайте текстовое поле для последней перезагрузки данных.

Выполните следующие действия.

1. Создайте текстовое поле, используя объект диаграммы Текст и изображение.

2. Добавьте следующую меру.

   `=today(0)`

3. В области Вид выберите Показать заголовки и добавьте в объект заголовок «Последняя перезагрузка данных».

Затем создайте текстовое поле для отображения текущего времени.

Выполните следующие действия.

1. Создайте текстовое поле, используя объект диаграммы Текст и изображение.

2. Добавьте следующую меру:

   `=today(1)`

3. В области Вид выберите Показать заголовки и добавьте в объект заголовок «Текущее время».

Создайте последнее текстовое поле, в котором будет отображаться время начала сеанса пользователя в приложении.

Выполните следующие действия.

1. Создайте текстовое поле, используя объект диаграммы Текст и изображение.

2. Добавьте следующую меру:

   `=today(2)`

3. В области Вид выберите Показать заголовки и добавьте в объект заголовок «Начало сеанса пользователя».

Диаграмма с объектами, созданными с использованием функции `today()` в скрипте загрузки

Диаграмма с объектами, созданными с использованием функции `today()` в скрипте загрузки

Диаграмма с объектами, созданными с использованием функции `today()`today() в скрипте загрузки![Диаграмма, демонстрирующая, как может выглядеть каждое из трех созданных текстовых полей после использования функции today() только для создания объектов диаграммы без загрузки данных в приложение.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-today-example-variables-chart.png)

В приведенной выше диаграмме показаны примерные значения для каждого из созданных объектов. Например, это могут быть следующие значения:

* Последняя перезагрузка данных: 06/23/2022

* Текущее время: 06/23/2022

* Начало сеанса пользователя: 06/23/2022

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

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

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

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

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

#### Скрипт загрузки и выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.

Скрипт загрузки содержит следующее:

* Набор данных, содержащий набор остатков по кредитам, который загружается в таблицу под именем `Loans`.

* Данные таблицы с полями для идентификаторов кредитов, остатка на начало месяца и простой процентной ставки, взимаемой по каждому кредиту за год.

Конечному пользователю требуется объект диаграммы, который будет отображать по идентификатору кредита текущий процент, начисленный по каждому кредиту за год до текущей даты. Хотя приложение перезагружается только раз в неделю, пользователю требуется обновлять результаты при каждом обновлении объекта или приложения.

Скрипт загрузки

```
Loans:
Load
*
Inline 
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

Результаты

Выполните следующие действия.

1. Загрузите данные и откройте лист. Создайте новую таблицу.

2. Добавьте следующие поля как измерения:

   * `loan_id`

   * `start_balance`

3. Затем создайте меру, чтобы рассчитать накопленный процент:

   `=start_balance*(rate*(today(1)-monthstart(today(1)))/365)`

4. Задайте параметру меры Формат чисел значение Денежный.

Результирующая таблица

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $16.44 |
| 8189 | $15000.00 | $58.56 |
| 8190 | $17500.00 | $28.77 |
| 8191 | $21000.00 | $48.90 |
| 8192 | $90000.00 | $517.81 |

Функция `monthstart()`, используя функцию `today()` для получения текущей даты в качестве единственного аргумента, возвращает дату начала текущего месяца. Вычитая этот результат из текущей даты, опять же с использованием функции `today()`, выражение возвращает количество дней, прошедших до сих пор в течение этого месяца.

Затем это значение умножается на процентную ставку и делится на 365, чтобы получить эффективную процентную ставку начисленную за этот период. После этого результат умножается на начальный остаток кредита, чтобы вернуть проценты, начисленные до сих пор в течение этого месяца.

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