Форма XLSForm может содержать вопросы типа Дата, Время и Дата и время. Эти вопросы могут быть сформулированы таким образом, чтобы облегчить сбор данных с использованием оформления.
Вы можете форматировать дату и время, используя функцию format-date в столбце вычисления вопросов даты, времени или даты и времени. Дополнительные сведения см. в разделе Форматирование даты.
Типы полей ArcGIS, которым Survey123 по умолчанию назначает вопрос Дата и Время, можно изменить, чтобы добавить типы Только дата, Только время или Сдвиг метки времени. Подробнее см. раздел Пользовательские столбцы Esri.
Внимание:
Ноябрьская версия Survey123 Connect 3.19 и более ранние версии не могут назначать поля типа Только дата, Только время и Сдвиг метки времени. Хотя в февральском обновлении Survey123 Connect 3.19 вы можете публиковать эти типы данных в ArcGIS Enterprise 11.2, они не поддерживаются полностью, и их использование в веб-слоях ArcGIS Enterprise 11.2 считается бета-функционалом.
В начальных и конечных вопросах автоматически фиксируются дата и время начала и окончания опроса, и их можно использовать для расчета времени, потраченного на прохождение опроса.
Форматы даты и времени
Существует три формата даты и времени, которые вы можете использовать в Survey123: формат ISO 8601, время эпохи (Unix) и десятичное время.
В следующей таблице приведена краткая информация об этих форматах.
Имя | Описание | Примеры |
---|---|---|
Строка, которая может включать смещение по UTC. Этот формат поддерживается и в полевом, и в веб-приложении Survey123. Этот формат удобен для значений по умолчанию и ограничений, поскольку он удобочитаем для человека. | 2015-08-31T09:07:01Z 2015-08-31T09:07:01Z-07:00 | |
Время Epoch (Unix) | Целочисленное значение, представляющее количество секунд, прошедших с 00:00:00 по всемирному координированному времени (UTC) 1 января 1970 года. Этот формат не поддерживается в веб-приложении Survey123. Несмотря на преобразование в удобочитаемую дату или время при отображении в приложениях ArcGIS, время эпохи - это способ хранения данных в ArcGIS Online и ArcGIS Enterprise, а также информация, возвращаемая элементом объекта. | 1441011600000 |
Десятичное время | Десятичное значение, представляющее количество дней, прошедших с 00:00:00 по всемирному координированному времени (UTC) 1 января 1970 года. Этот формат поддерживается как полевым приложением, так и веб-приложением Survey123. При сложении или вычитании из значения даты необходимо использовать десятичное время. | 16678.375 |
Подсказка:
Чтобы обеспечить согласованную работу опросов как в полевом приложении, так и в веб-приложении, вы должны использовать формат ISO 8601 или десятичное время в вычислениях даты и времени.
Вычисление времени эпохи и десятичного времени
В следующей таблице описывается, как время эпохи и десятичное время соотносится с форматом времени, удобном для человека.
Привычная запись времени | Эпохальное время | Десятичное время |
---|---|---|
1 секунда | 1000 | 0.00001157407407 (1 / 24 / 60 / 60) |
1 минута | 60,000 (1000 * 60) | 0.00069444444444 (1 / 24 / 60) |
1 час | 3600000 (1000 * 60 * 60) | 0.04166666666667 (1 / 24) |
1 день | 86400000 (1000 * 60 * 60 * 24) | 1 |
1 неделя | 604800000 (1000 * 60 * 60 * 24 * 7) | 7 |
1 месяц | 2630880000 (1000 * 60 * 60 * 24 * 30.45) | 30.45 |
1 год | 31557600000 (1000 * 60 * 60 * 24 * 365.25) | 365.25 |
Если у вас есть опросы, при создании которых использовались вычисления времени на основе эпохи, время нужно преобразовать в десятичное, чтобы обеспечить корректную работу в веб-приложении Survey123. Ниже приведены примеры выражений, конвертированные из эпохального в десятичное время:
Цель | Вычисление эпохального времени | Вычисление десятичного времени |
---|---|---|
15 минут в будущее | now() + 15 * 60 * 1000 | date-time(decimal-date-time(now()) + 0.0104166675) |
Две недели в будущее | now() + 14 * 24 * 60 * 60 * 1000 | date(decimal-date-time(now()) + 14) |
Время в минутах, затраченное на обед | int(${LunchEnd} - ${LunchStart}) div (1000 * 60) | int((decimal-date-time(${lunchends}) - decimal-date-time(${lunchstarts})) * 24 * 60) |
Вычисление возраста по дате рождения (в годах) | int((today() - ${birth_date}) div (1000 * 24 * 60 * 60 * 365.25)) | int((decimal-date-time(today()) - decimal-date-time(${birth_date})) div 365.25) |
После того как вы поймете, какие изменения необходимы для вашего опроса, процесс обновления будет следующим:
- Обновите в Survey123 Connect все вычисления, основанные на эпохальном времени, на вычисления, основанные на десятичном времени. Рекомендуется сохранить архивную копию XLSForm перед редактированием.
- Протестируйте измененные вычисления, просмотрев их в Survey123 Connect, и убедитесь, что они работают в соответствии с вашими ожиданиями.
- Заново опубликуйте опрос. Обновления вычислений не приводят к повторной публикации векторного слоя, поэтому имеющие данные не будут при этом потеряны.
- Предложите полевым пользователям обновить опрос в полевом приложении Survey123.