2013-12-12 123 views
3

我将日期存储到如下所示的本地存储中。存储日期和从本地存储中检索

JS:

var currentTime = new Date(); //get the current time. 

//Clock in the time. 
localStorage.time = currentTime; 

当我尝试一段时间再取回使用...

var timeObj = new Date(localStorage.time); 
var checkInDayOfMonth = timeObj.getUTCDate(); //returns 1-31 

的timeObj不会有正确的日期时间,它反而显得有电流就好像它忽略了我发送的时间参数一样。

我正在使用getUTCDate来获取每月的一天。如果今天的价值与存储中的价值不同,我知道这是新的一天。

开幕谷歌Chrome检查显示存储在localStorage的这种格式的日期:

Wed Dec 11 2013 22:17:45 GMT-0800 (PST) 

那是不是为日期构造一个可接受的格式?

如何正确存储和检索localStorage中的日期?

回答

9

你可以把它找回来的UNIX时间戳。确保将一个数字传递给Date构造函数。

首先保存。为此添加一个+,使其成为时间戳。

localStorage.setItem('time', +new Date); 

再后来retreive,但经过数日的构造:

new Date(parseInt(localStorage.getItem('time'))); 
0

试试这个:

var currentTimeStr = timeObj.getDate() + "-" + (timeObj.getMonth()+1) + "-" + timeObj.getUTCFullYear() + " " + timeObj.getHours() + ":" + timeObj.getMinutes(); 

它给了我输出: “2013年12月12日13:44”(我在下午1点51分检索,因此它不会给当前的时间。)

希望能帮助到你。

+0

上面有错误,而且一个月前的当天,还一个月你需要说+ 1,因为它返回0-11 –

2

商店的UNIX时间戳,然后从重新创建日期对象:

window.localStorage.time = new Date().getTime(); 

var date = new Date(parseInt(window.localStorage.time)); 
+0

我试过这样做,但我只是拿回NaN。我看到UNIX时间戳(长串数字)。它似乎没有正确创建日期对象。有任何想法吗?你真的测试过这个想法吗? –

+0

我想我的评论出来看起来错了,我的意思是说我非常喜欢这个想法(如果它能工作的话)。有时候人们会发布伪代码。所以很好奇,如果那是你正在做的事情,或者如果你已经尝试过这个想法并且它可以证实有效? –

+1

retreival部分需要一个parseInt。看看我的答案? – Zlatko