我有一个用vanilla JS编写的测验程序。它应该记录完成它所需的时间。
我想要达到的是用户通过减去两个变量(字符串)来回答问题需要多长时间。如果可能的话。
当用户说出他的名字并按下一个按钮时,即可进行测验"在本地存储中记录的时间如下:
var storeName;
var d = new Date();
var h = getHours();
var m = getMinutes();
var s = getSeconds();
var startTime = h + ":" + m + ":" + s;
var endTime = h + ":" + m + ":" + s;
var result;
var storage = {
storeName: storeName,
startTime: startTime,
endTime: null,
result: result
};
棘手的部分是我不知道如何从EndTime中减去startTime以获得回答问题所需的时间。这个测验在几分钟内结束,因此使用小时是多余的。
当用户点击"提交"回答最后一个问题我想把时间记录在LS中作为endTime。
我希望我一点都不清楚,非常感谢你们所有的时间。谢谢。
答案 0 :(得分:1)
不是将字符串存储为日期,而是以毫秒为单位直接存储时间。然后你可以用结束时间减去开始时间来计算时差。
var startTime = Date.now();
var storage = {
storeName: storeName,
startTime: startTime,
endTime: null,
result: result
};
稍后您可以使用Date.now()
计算endTime并从startTime中减去它以获得时差。
storage.endTime = Date.now();
//difference
var diff = storage.endTime - storage.startTime;
答案 1 :(得分:0)
您使用新的Date()错误。 应该是这个。
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
var s = d.getSeconds();
console.log(h);
至于进一步实施,您应该节省当前时间,然后在点击/登录时使用计时器。之后减去这两个值。秒的示例。你只需要通过例如3600来设置(和/或采用模数去当前时间的真实时间)来获得秒而不是一小时。或者您可以使用所有变量并减去时间。在途中,如果你遇到添加问题,例如你可以得到5 + 3 = 53而不是8你使用数字(5)+数字(3)来做加法而不是连接。祝你好运:P
编辑:也是为了从你的字符串中获取时间。通过拆分,你可以获得一系列的价值。
var test = h + ":" + m + ":" + s;
console.log(test.split(":"));