XLSForm 可以包含日期、时间或日期时间问题。 可以使用外观设置这些问题的样式,以帮助进行数据捕获。
您可以在日期、时间或日期时间问题的计算列中使用 format-date 函数设置日期和时间格式。 有关详细信息,请参阅设置日期的格式。
默认情况下,Survey123 分配的日期和时间问题的 ArcGIS 字段类型可以更改为仅捕获日期、仅时间或时间戳偏移。 有关详细信息,请参阅 Esri 自定义列。
警告:
Survey123 Connect 3.19 11 月版本及更早版本无法分配仅日期、仅时间或时间戳偏移字段类型。 尽管 Survey123 Connect 3.19 2 月更新的版本可以将这些数据类型发布到 ArcGIS Enterprise 11.2,但是它们得不到完全支持,其在 ArcGIS Enterprise 11.2 Web 图层中的使用被视为测试功能。
开始和结束问题可自动捕获调查的开始和结束日期和时间,并且可用于计算完成调查花费的时间。
日期和时间格式
在 Survey123 中,您可以使用三种日期和时间格式:ISO 8601 格式、新纪元 (Unix) 时间和十进制时间。
下表汇总了这些格式。
名称 | 描述 | 示例 |
---|---|---|
字符串可以包含 UTC 偏移量。 此格式在 Survey123 外业应用程序和 Web 应用程序中受支持。 由于具有可读性,该格式适用于默认设置和约束。 | 2015-08-31T09:07:01Z 2015-08-31T09:07:01Z-07:00 | |
新纪元 (Unix) 时间 | 表示自 1970 年 1 月 1 日 00:00:00 协调世界时 (UTC) 以来经过的毫秒数的整数。 此格式在 Survey123 Web 应用程序中不受支持。 尽管在 ArcGIS 应用程序中显示时已转换为便于阅读的日期或时间,但新纪元时间是数据在 ArcGIS Online 和 ArcGIS Enterprise 中存储的方式,并且是要素对象返回的内容。 | 1441011600000 |
十进制时间 | 表示自 1970 年 1 月 1 日 00:00:00 协调世界时 (UTC) 以来经过的天数的十进制数。此格式在 Survey123 外业应用程序和 Web 应用程序中均受支持。 对某一日期值进行加减法时,必须使用十进制时间。 | 16678.375 |
提示:
要确保调查能够在外业应用程序和 Web 应用程序中运行一致,您必须在日期和时间计算中使用 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 Web 应用程序中正常运行。 以下提供了一些从新纪元时间转换为十进制时间的表达式示例:
目标 | 新纪元时间计算 | 十进制时间计算 |
---|---|---|
未来 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 外业应用程序中更新调查。