首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保存和加载日期本地存储

保存和加载日期本地存储
EN

Stack Overflow用户
提问于 2012-09-30 20:38:46
回答 7查看 37.3K关注 0票数 19

我必须将日期保存到localStorage,当页面刷新时,我想要计算从那以后已经过去了多少时间。

现在,问题来了: localStorage将日期保存为字符串,因此在localStorage中保存日期后,如果试图计算这两个日期之间的差值,将返回NaN。

在您的javascript控制台中尝试以下内容:

代码语言: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.stringifyJSON.parse,试图保持date对象的完整性,但也不起作用。

我的猜测是,我必须解析localStorage中的日期。如果没有更好的方法,我该怎么做呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-09-30 20:39:33

演示: http://jsfiddle.net/AuhtS/

代码:

代码语言:javascript
运行
复制
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

Reason

所有内容都作为字符串存储在localStorage中。

所以当你做localStorage.b - localStorage.a的时候,你尝试的是从一个字符串中减去另一个字符串。这就是它不起作用的原因。

票数 48
EN

Stack Overflow用户

发布于 2012-09-30 20:42:52

要在localStorage中存储日期,只需执行以下操作

代码语言:javascript
运行
复制
localStorage['key'] = ''+myDate.getTime();

要恢复它:

代码语言:javascript
运行
复制
var myDate = new Date(parseInt(localStorage['key'], 10));

(您可能还想测试一下之前定义的代码)

它还可以处理持续时间(一个日期减去另一个日期):只需使用long (millisecondes)值,并将其转换为字符串。

请注意,JSON不包括标准化的日期格式。不要将JSON用于日期。

票数 9
EN

Stack Overflow用户

发布于 2018-04-17 04:23:28

我会用这个:

代码语言:javascript
运行
复制
var d1 = new Date();
localStorage.setItem("key", d1.getTime());
var d2 = new Date(parseInt(localStorage.getItem[key]));

所缺少的就是正确的null验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12661293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档