如何在Qualtrics中计算两个时间的差值(卧床时长)
计算卧床时长的Qualtrics代码实现
需求说明
受访者通过flatpickr时间选择器在不同问题中分别记录入睡时间(time to bed)和起床时间(time out of bed),时间格式示例:入睡时间为11:00 PM、起床时间为8:00 AM。需计算卧床时长=起床时间-入睡时间,结果以分钟为单位。
尝试的实现代码
Qualtrics.SurveyEngine.addOnload(function() { /*页面加载时执行的代码*/ }); Qualtrics.SurveyEngine.addOnReady(function() { // 获取入睡和起床时间问题的输入值 var timeToBed = "${q://QID4/ChoiceTextEntryValue}"; var timeOutOfBed = "${q://QID12/ChoiceTextEntryValue}"; // 为两个时间创建Date对象 var timeToBedDate = new Date("1/1/2000 " + timeToBed); var timeOutOfBedDate = new Date("1/1/2000 " + timeOutOfBed); // 判断起床时间是否早于入睡时间(即跨天情况) if (timeOutOfBed < timeToBed) { timeOutOfBedDate.setDate(timeOutOfBedDate.getDate() + 1); } // 计算时长差(单位:分钟) var timeInBedMinutes = (timeOutOfBedDate - timeToBedDate) / 1000 / 60; // 将结果保存为嵌入式数据变量 Qualtrics.SurveyEngine.setEmbeddedData("timeInBed", timeInBedMinutes); }); Qualtrics.SurveyEngine.addOnUnload(function() { /*页面卸载时执行的代码*/ });
代码说明
- 通过Qualtrics内置变量
${q://QIDx/ChoiceTextEntryValue}获取对应问题的时间输入值 - 借助固定日期(2000/1/1)创建Date对象,避免日期差异干扰时间计算
- 处理跨天场景:若起床时间字符串小于入睡时间字符串,将起床时间的日期加1天
- 计算两个Date对象的毫秒差,转换为分钟后保存为嵌入式数据
timeInBed
内容的提问来源于stack exchange,提问作者Jonathan Cloughesy
相关产品推荐
相关产品推荐

