Javascript 在localstorage中设置的两个值之间减去时间

Javascript 在localstorage中设置的两个值之间减去时间,javascript,storage,Javascript,Storage,我有一个用香草JS编写的测验程序。它应该记录完成它所需的时间 我想实现的是,用户通过减去两个变量(字符串)回答问题需要多长时间。如果可能的话 当用户说出自己的姓名并按下“开始测验”按钮时,当前时间将记录在localstorage中,如下所示: var storeName; var d = new Date(); var h = getHours(); var m = getMinutes(); var s = getSeconds(); var startTime = h + ":" + m +

我有一个用香草JS编写的测验程序。它应该记录完成它所需的时间

我想实现的是,用户通过减去两个变量(字符串)回答问题需要多长时间。如果可能的话

当用户说出自己的姓名并按下“开始测验”按钮时,当前时间将记录在localstorage中,如下所示:

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

我希望我没有说不清楚,提前非常感谢大家抽出时间。谢谢。

您的新日期()用错了。 应该是这个

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)来做adition而不是concat。祝你好运

编辑:也可以从字符串中获取时间。使用split可以得到一个值数组

var test = h + ":" + m + ":" + s;
console.log(test.split(":"));

直接以毫秒为单位存储时间,而不是将字符串存储为日期。然后你可以减去开始时间和结束时间来计算时间差

var startTime = Date.now();
var storage = {
    storeName: storeName,
    startTime: startTime,
    endTime: null,
    result: result
};
storage.endTime = Date.now();

//difference
var diff = storage.endTime - storage.startTime;
稍后,您可以使用
Date.now()
计算结束时间,并将其从开始时间中减去,得到时间差

var startTime = Date.now();
var storage = {
    storeName: storeName,
    startTime: startTime,
    endTime: null,
    result: result
};
storage.endTime = Date.now();

//difference
var diff = storage.endTime - storage.startTime;

谢谢你这么快回复PVL。我试试这个。非常感谢。