我必须将日期保存到 localStorage,当页面刷新时我想计算从那时起经过了多少时间。
现在,问题来了:localStorage 将日期保存为字符串,因此在将日期保存在 localStorage 中后,尝试计算这两个日期之间的差异会返回 NaN。
在你的 javascript 控制台试试这个:
var a = new Date();
var b = new Date();
console.log(b - a); //this works
localStorage.a = a;
localStorage.b = b;
console.log(localStorage.b - localStorage.a); //this doesn't work
我还尝试了 JSON.stringify
和 JSON.parse
试图保持日期对象完整,但这也不起作用。
我的猜测是我必须解析 localStorage 中的日期。如果没有更好的方法,我该怎么做?
最佳答案
演示: http://jsfiddle.net/AuhtS/
代码:
var a = new Date();
var b = new Date();
console.log(b - a); //this works
localStorage.a = a;
localStorage.b = b;
a = Date.parse(localStorage.a); // parse to date object
b = Date.parse(localStorage.b);
console.log(b - a); // now, this will work
原因
所有内容都作为字符串存储在localStorage
中。
因此,当您执行 localStorage.b - localStorage.a
时,您正在尝试从一个字符串中减去另一个字符串。这就是它不起作用的原因。
关于javascript - 保存和加载日期本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12661293/