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

时间:2016-03-02 01:07:08

标签: javascript storage

我有一个用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。

我希望我一点都不清楚,非常感谢你们所有的时间。谢谢。

2 个答案:

答案 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(":"));