Cri*_*sty 13 javascript local-storage
我必须将日期保存到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
Run Code Online (Sandbox Code Playgroud)
我也尝试JSON.stringify和JSON.parse努力保持Date对象完好,但也不管用.
我的猜测是我必须在localStorage中解析日期.如果没有更好的方法,我该怎么做?
tec*_*bar 42
演示: 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
Run Code Online (Sandbox Code Playgroud)
原因
一切都被存储为一个字符串在localStorage.
所以,当你这样做时localStorage.b - localStorage.a,你正在尝试从另一个字符串中减去一个字符串.这就是为什么它不起作用.
要在localStorage中存储日期,只需执行
localStorage['key'] = ''+myDate.getTime();
Run Code Online (Sandbox Code Playgroud)
并恢复它:
var myDate = new Date(parseInt(localStorage['key'], 10));
Run Code Online (Sandbox Code Playgroud)
(您可能还想测试之前定义的)
它也适用于持续时间(日期减去另一个):只需使用该值为long(millisecondes)并转换为字符串和从字符串转换.
请注意,JSON不包含标准化日期格式.不要将JSON用于日期.
| 归档时间: |
|
| 查看次数: |
27589 次 |
| 最近记录: |