Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В 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 |
| Только дата | - | 2023-10-15 |
Получение значений с помощью клиентского 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
Настройка поведения и формата столбца даты и времени с использованием кода