Форма XLSForm может содержать вопросы типа Дата, Время и Дата и время. Эти вопросы могут быть сформулированы таким образом, чтобы облегчить сбор данных с использованием оформления.
Вы можете форматировать дату и время, используя функцию format-date в столбце вычисления вопросов даты, времени или даты и времени. Дополнительные сведения см. в разделе Форматирование даты.
Типы полей ArcGIS, которым Survey123 по умолчанию назначает вопрос Дата и Время, можно изменить, чтобы добавить типы Только дата, Только время или Сдвиг метки времени. Подробнее см. раздел Пользовательские столбцы Esri.
Внимание:
Ноябрьская версия Survey123 Connect 3.19 и более ранние версии не могут назначать поля типа Только дата, Только время и Сдвиг метки времени. Хотя в февральском обновлении Survey123 Connect 3.19 вы можете публиковать эти типы данных в ArcGIS Enterprise 11.2, они не поддерживаются полностью, и их использование в веб-слоях ArcGIS Enterprise 11.2 считается бета-функционалом.
В начальных и конечных вопросах автоматически фиксируются дата и время начала и окончания опроса, и их можно использовать для расчета времени, потраченного на прохождение опроса.
Эпохальное и десятичное время
Существует два способа представления времени в Survey123: эпохальное время и десятичное время. Полевое приложение Survey123 поддерживает и эпохальное и десятичное время, а веб-приложение поддерживает только десятичное время. Чтобы обеспечить согласованную работу опросов как в полевом приложении, так и в веб-приложении, вы должны использовать десятичное время в вычислениях даты и времени.
Эпохальное и десятичное время — это разные способы представления времени. Эпохальное время (также известное как время UNIX) определяется как количество секунд, прошедших с 00:00:00 по всемирному координированному времени (UTC) 1 января 1970 года. ArcGIS хранит время в миллисекундах в формате UTC, поэтому полевое приложение Survey123 поддерживает эпохальное время в миллисекундах. Десятичное время определяется как количество дней, прошедших с того же момента.
Привычная запись времени | Эпохальное время | Десятичное время |
---|---|---|
Понедельник, 31 августа 2015 г., 09:00:00 | 1441011600000 | 16678.375 |
Это важно потому, что, в отличие от полевого приложения Survey123, которое может работать и с эпохальным, и с десятичным временем, в веб-приложении Survey123 поддерживается только десятичное время. Для того, чтобы опросы работали через интернет (сами по себе или вместе с полевыми приложениями), необходимо выполнять расчет некоторых дат в десятичном времени. В частности, это необходимо для расчета продолжительности, например – при вычислении количества дней или секунд, или там, где используется добавление или вычитание дат.
Для такого типа вычислений необходимо выполнить вычисление в десятичном формате дат, выполнить вычисление и полученный результат снова конвертировать в значение даты. Приведенное в качестве примера уравнение переводит дату, полученную из функции now(), добавляет к ней 14 дней и преобразует результат обратно в дату.
date(decimal-date-time(now()) + 14)
Вы можете затем использовать дату, возвращаемую этой функцией, для обновления даты в опросе или же в качестве части опроса.
При добавлении или вычитании из значения даты вам также нужно будет использовать десятичные даты. Используйте следующую таблицу в качестве справочной информации о том, как десятичное время соотносится с форматом времени, привычным для нас, и с эпохальным временем.
Привычная запись времени | Эпохальное время | Десятичное время |
---|---|---|
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.