Дата и время

Форма 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) и десятичное время.

В следующей таблице приведена краткая информация об этих форматах.

ИмяОписаниеПримеры

Формат ISO 8601

Строка, которая может включать смещение по 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)

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

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