2013-12-12 85 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