Поведение и формат столбца "Дата и время"

В Microsoft Dataverse вы можете указать, как значения даты и времени будут отображаться для пользователей,а также как они корректируются с учетом часовых поясов.

Для столбцов даты и времени доступны два параметра.

  • Поведение: корректировать ли значения с учетом часовых поясов.
  • Формат: отображать ли временную часть значения.

Поведение

Dataverse хранит все значения даты и времени в часовом поясе UTC. Когда ваше приложение отображает значения или обрабатывает значения, введенные пользователями, Dataverse и приложения на основе модели могут корректировать их с учетом часового пояса пользователя, основываясь на следующих значениях параметра Поведение.

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

Часовой пояс пользователя устанавливается в личных параметрах; это не системный часовой пояс Windows, Android, iOS или macOS. Однако системный часовой пояс может влиять на клиентские скрипты, работающие с датами JavaScript.

Формат.

Все столбцы даты и времени имеют временную часть, если только для них не установлено поведение Только дата. Формат: определяет, отображать ли временную часть значения.

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

Примечание

Если ФорматТолько дата, пользователи все равно могут изменять временную часть. Это можно делать, например, с помощью вызовов веб-API или с помощью элемента управления, имеющего временную часть. Это отличается от поведения Только дата, где временная часть вообще не сохраняется.

Рекомендации по использованию

Используйте поведение Независимо от часового пояса, когда информация о часовом поясе не нужна, — например, для указания времени заселения в гостиницу. В этом случае все пользователи во всех часовых поясах будут видеть одно и то же значение даты и времени.

Используйте поведение Только дата в случаях, когда информация о времени суток и часовом поясе не нужна, — например, для дней рождения или годовщин. В этом случае пользователи во всех часовых поясах будут видеть одно и то же значение даты.

Поведение Независимо от часового пояса с форматом Только дата — это практически то же самое, что поведение Только дата. Используйте первый вариант, если вы не уверены, понадобится ли вам временная часть в будущем.

Примеры

Отображаемые значения

В Dataverse хранится значение 2023-10-15T07:30:00Z (или 2023-10-15 в случае поведения Только дата). Пользователи в часовом поясе UTC-8 видят следующие значения в приложении на основе модели или при использовании запроса веб-API для получения форматированного значения:

Поведение Формат. Отображаемое значение
Часовой пояс пользователя Дата и время 14 октября 2023 г., 23:30
Часовой пояс пользователя Только дата 14 октября 2023 г.
Независимо от часового пояса Дата и время 15 октября 2023 г., 7:30
Независимо от часового пояса Только дата 15 октября 2023 г.
Только дата - 15 октября 2023 г.

Ввод значений в приложении

Пользователи в часовом поясе UTC-8 вводят October 14th, 2023, 11:30 pm в приложении на основе модели. Значение сохраняется в Dataverse следующим образом:

Поведение Формат. Значение, сохраненное в Dataverse
Часовой пояс пользователя Дата и время 2023-10-15T07:30:00Z
Часовой пояс пользователя Только дата 2023-10-15T07:30:00Z
Независимо от часового пояса Дата и время 2023-10-14T23:30:00Z
Независимо от часового пояса Только дата 2023-10-14T23:30:00Z
Только дата - 14.10.2023

Если пользователь вводит только дату October 14th, 2023, предполагается, что временная часть равна 00:00.

Поведение Формат. Значение, сохраненное в Dataverse
Часовой пояс пользователя Только дата 2023-10-14T08:00:00Z
Независимо от часового пояса Только дата 2023-10-14T00:00:00Z
Только дата - 14.10.2023

Ввод недопустимых значений в приложении

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

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

Аналогичным образом, разные клиенты по-разному обрабатывают повторяющиеся диапазоны времени. Например, в тихоокеанском часовом поясе летнее время закончилось 5 ноября 2023 года в 2:00, что означает сдвиг времени на один час назад, на 1:00. Время между 1:00 и 2:00 в этот день повторяется дважды. Такое время, как 1:30, может относиться к любому часовому поясу. Если вам нужно однозначно отображать или вводить время в этом диапазоне, лучше всего временно переключиться на часовой пояс, который не предусматривает перехода на летнее время.

Получение необработанных значений с помощью веб-API

В Dataverse хранится значение 2023-10-15T07:30:00Z (или 2023-10-15 в случае поведения Только дата). Пользователи во всех часовых поясах получат следующие значения с помощью запроса веб-API для получения значения:

Поведение Формат. Необработанное значение
Часовой пояс пользователя Дата и время 2023-10-15T07:30:00Z
Часовой пояс пользователя Только дата 2023-10-15T07:30:00Z
Независимо от часового пояса Дата и время 2023-10-15T07:30:00Z
Независимо от часового пояса Только дата 2023-10-15T07:30:00Z
Только дата - 15.10.2023

Получение значений с помощью клиентского API

Пользователи в часовом поясе UTC-8 вводят October 14th, 2023, 11:30 pm в приложении на основе модели. Функции клиентского API, такие как formContext.getAttribute(<column name>).getValue(), возвращают значение с примененными корректировками с учетом часового пояса:

Поведение Формат. JavaScript dateValue.toUTCString()
Часовой пояс пользователя Дата и время 15.10.2023 07:30 (UTC)
Часовой пояс пользователя Только дата 15.10.2023 07:30 (UTC)

При поведении Независимо от часового пояса значение даты JavaScript находится в часовом поясе браузера:

Поведение Формат. JavaScript dateValue.toString()
Независимо от часового пояса Дата и время 14.10.2023 23:30 (часовой пояс браузера)
Независимо от часового пояса Только дата 14.10.2023 23:30 (часовой пояс браузера)

Значения даты в JavaScript всегда имеют временной компонент. Вот почему значения с поведением Только дата имеют временной компонент, равный 00:00:

Поведение Формат. JavaScript dateValue.toString()
Только дата - 15.10.2023 00:00 (часовой пояс браузера)

Примечание

На значения даты в JavaScript влияет часовой пояс браузера, который определяется параметрами операционной системы устройства.

При поведении Часовой пояс пользователя результат клиентского API следует интерпретировать как значение времени в формате UTC. Для работы с ним используйте Date.getUTCDate(), Date.getUTCHours() и т. д. Чтобы получить то, что видит пользователь, примените getTimeZoneOffsetMinutes. Не используйте Date.getDate(), Date.getHours() и т. д., поскольку эти функции будут отображать значение в часовом поясе браузера.

При поведении Независимо от часового пояса и Только дата результат клиентского API следует интерпретировать как значение в часовом поясе браузера. Для работы с ним используйте Date.getDate(), Date.getHours() и т. д. Не используйте Date.getUTCDate(), Date.getUTCHours() и т. д., поскольку вам не нужно корректировать значение с учетом часовых поясов.

Изменение поведения "Часовой пояс пользователя"

Если издатель управляемого решения это не запрещает, вы можете изменить поведение существующих пользовательских столбцов типа "Дата" с Часовой пояс пользователя на Только дата или Независимо от часового пояса. Это разовое изменение.

Изменение поведение столбцов влияет на значения столбцов, добавляемые или изменяемые после изменения поведения столбцов. Существующие значения столбцов остаются в базе данных в формате UTC. Чтобы изменить поведение существующих значений столбцов с UTC на Только дата, вам может понадобиться помощь разработчика для преобразования поведения существующих значений даты и времени в базе данных.

Предупреждение

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

Изменение поведения при импорте решения

При импорте решения, содержащего столбец типа "Дата" с поведением Часовой пояс пользователя, вы можете изменить поведение на Только дата или Независимо от часового пояса.

Примечание

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

Предотвращение изменения поведения

При распространении пользовательского столбца даты в управляемом решении можно запретить пользователям решения изменять поведение, задав для управляемого свойства CanChangeDateTimeBehavior значение False. Дополнительные сведения: Задание управляемых свойств для столбцов

Операторы запроса даты и времени, не поддерживаемые при поведении "Только дата"

Следующие операторы, связанные с запросами даты и времени, не работают при поведении Только дата. При использовании в запросе одного из этих операторов создается ошибка с исключением "недействительный оператор".

  • Старше X минут
  • Старше X ч
  • Последние X ч
  • Следующие X ч

См. также

Устранение проблем с датой и временем в приложениях на основе модели
Создание и изменение столбцов
Определение вычисляемых столбцов для автоматизации ручных расчетов
Управляемые свойства столбца
Управляемые свойства
Блог: Работа с часовыми поясами в Dataverse
Настройка поведения и формата столбца даты и времени с использованием кода

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).