我必须将日期保存到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,试图保持date对象的完整性,但也不起作用。
我的猜测是,我必须解析localStorage中的日期。如果没有更好的方法,我该怎么做呢?
发布于 2012-09-30 20:39:33
演示: 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 workReason
所有内容都作为字符串存储在localStorage中。
所以当你做localStorage.b - localStorage.a的时候,你尝试的是从一个字符串中减去另一个字符串。这就是它不起作用的原因。
发布于 2012-09-30 20:42:52
要在localStorage中存储日期,只需执行以下操作
localStorage['key'] = ''+myDate.getTime();要恢复它:
var myDate = new Date(parseInt(localStorage['key'], 10));(您可能还想测试一下之前定义的代码)
它还可以处理持续时间(一个日期减去另一个日期):只需使用long (millisecondes)值,并将其转换为字符串。
请注意,JSON不包括标准化的日期格式。不要将JSON用于日期。
发布于 2018-04-17 04:23:28
我会用这个:
var d1 = new Date();
localStorage.setItem("key", d1.getTime());
var d2 = new Date(parseInt(localStorage.getItem[key]));所缺少的就是正确的null验证。
https://stackoverflow.com/questions/12661293
复制相似问题