【发布时间】:2021-12-06 18:38:18
【问题描述】:
我正在使用 moment.js 来计算 Qualtrics 中两个日期之间的差异。到目前为止,下面的代码运行良好。日期使用 YY-mm-dd 格式,最后,我得到了天数的差异。
const duedate= Qualtrics.SurveyEngine.getEmbeddedData('duedate');
const daystodue = moment(duedate).diff(moment(new Date()), 'days', false);
Qualtrics.SurveyEngine.setEmbeddedData('daystill', daystodue );
问题是当我将嵌入数据 'duedate' 的格式从 YY-mm-dd 更改为 ISO 8601(例如,2021-10-19T20:30:48Z)时,这将停止工作。
我知道我可能还需要将 new Date() 的格式更改为 ISO,或者将 'duedate' 重新格式化回 YY-mm-dd,但我正在努力解决这个问题。这是我尝试过的:
const duedate= Qualtrics.SurveyEngine.getEmbeddedData('duedate');
const daystodue = moment(duedate).diff(moment(new Date().format("YYYY-MM-
DDTHH:mm:ssZ")), 'days', false);
Qualtrics.SurveyEngine.setEmbeddedData('daystill', daystodue );
我以 this article 为基础,但我是 JavaScript 的初学者,不知道如何使它工作。
非常感谢任何帮助!
【问题讨论】:
-
如果
duedate是一个 ISO 8601 编码的字符串,您应该能够从中创建一个 JavaScriptDate对象(例如new Date(duedate))。你试过吗? -
使用 moment.js 解析字符串时,您应该始终提供格式unless it's an ISO format。
标签: javascript date momentjs