Дата и время

Форма 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)

После того как вы поймете, какие изменения необходимы для вашего опроса, процесс обновления будет следующим:

  1. Обновите в Survey123 Connect все вычисления, основанные на эпохальном времени, на вычисления, основанные на десятичном времени. Рекомендуется сохранить архивную копию XLSForm перед редактированием.
  2. Протестируйте измененные вычисления, просмотрев их в Survey123 Connect, и убедитесь, что они работают в соответствии с вашими ожиданиями.
  3. Заново опубликуйте опрос. Обновления вычислений не приводят к повторной публикации векторного слоя, поэтому имеющие данные не будут при этом потеряны.
  4. Предложите полевым пользователям обновить опрос в полевом приложении Survey123.