描述
在 ArcGIS Survey123 Connect 中,可以使用 concat() 函数串连多个问题的值。 尽管如此,当将时间与文本值串连时,时间以纪元时间显示,而不是人类可读的时间。
下图显示了显示“ID 名称”和“时间”问题中的值串连的纪元时间的调查。
按照本文中的工作流,在与 ArcGIS Survey123 Connect 中的文本值串连时以可读格式显示时间。
解决方案或解决方法
- 在 ArcGIS Survey123 Connect 中,打开调查的 XLSForm。
- 创建调查问题以输入文本值。
- 在调查工作表的类型列中,从下拉列表中选择文本。
- 指定 name 和 label 列中的值。 在此示例中,问题被命名为 my_id 并标注为 ID 名称。
- 创建调查问题以输入日期或时间值。
- 在新行的类型列中,从下拉列表中选择日期、时间或日期时间。 在此示例中,选择时间。
- 指定 name 和 label 列中的值。 在此示例中,问题被命名为 my_time 并标注为“时间”。
要以可读格式显示时间,必须先从值中提取三个不同的时间组成部分:小时、分钟和周期 (AM/PM),然后再与文本值连接。
- 创建备注以返回 24 小时制的时间。
- 在新行的类型列中,从下拉列表中选择备注。
- 指定 name 和 label 列中的值。 在此示例中,备注名为 my_test 并标注为“24 小时制”。
- 在外观列中,从下拉列表中选择隐藏以隐藏调查中的备注问题。
- 在 calculation 列中,插入以下表达式: 如有必要,相应地替换表达式中的问题名称。
format-date(${my_time}, '%h:%M')
- 创建备注以仅返回 12 小时制的时间。
- 在新行的类型列中,从下拉列表中选择备注。
- 指定 name 和 label 列中的值。 在此示例中,备注名为 my_hour 并标注为小时。
- 在外观列中,从下拉列表中选择隐藏以隐藏调查中的备注问题。
- 在 calculation 列中,插入以下表达式: 如有必要,相应地替换表达式中的问题名称。
if(format-date(${my_test}, '%h') >12, (format-date(${my_test}, '%h')-12), if(format-date(${my_test}, '%h') = 0, '12', format-date(${my_test}, '%h')))
- 创建备注以仅返回时间的分钟。
- 在新行的类型列中,从下拉列表中选择备注。
- 指定 name 和 label 列中的值。 在此示例中,备注名为 my_min 并标注为分钟。
- 在外观列中,从下拉列表中选择隐藏以隐藏调查中的备注问题。
- 在 calculation 列中,插入以下表达式: 如有必要,相应地替换表达式中的问题名称。
format-date(${my_time}, '%M')

- 创建备注以计算和显示上午或下午的时间段。
- 在新行的类型列中,从下拉列表中选择备注。
- 指定 name 和 label 列中的值。 在此示例中,备注名为 my_ampm 并标注为 AMPM。
- 在外观列中,从下拉列表中选择隐藏以隐藏调查中的备注问题。
- 在 calculation 列中,插入以下表达式: 如有必要,相应地替换表达式中的问题名称。
if(format-date(${my_time}, '%h') >11, 'PM', 'AM')
- 创建备注以串连时间组件。
- 在新行的类型列中,从下拉列表中选择备注。
- 指定 name 和 label 列中的值。 在此示例中,备注名为 concattime 并标注为 Concat Time。
- 在外观列中,从下拉列表中选择隐藏以隐藏调查中的备注问题。
- 在 calculation 列中,插入以下表达式: 如有必要,相应地替换表达式中的问题名称。
concat(${my_hour}, ':', ${my_min}, ' ', ${my_ampm})
- 创建备注以串连文本和时间值。
- 在新行的类型列中,从下拉列表中选择备注。
- 指定 name 和 label 列中的值。 在此示例中,备注名为 myconcat 并标注为 My Concat Time。
- 在 calculation 列中,插入以下表达式: 如有必要,相应地替换表达式中的问题名称。
${my_id} + ' ' + string(${concattime})
下图显示了配置的 XLSForm。
- 保存 XLSForm 并发布调查。
下图显示了与文本值串连时以可读格式显示时间的调查。