2013-12-12 6 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 не будет иметь правильную DateTime, вместо этого, кажется, есть ток как будто он игнорирует параметры времени, которое я отправляю.

Я использую getUTCDate, чтобы получить день месяца. Если значение сегодняшнего дня отличается от того, что находится на складе, я знаю, что это новый день.

Открытие Google Chrome инспектор показывает дату, сохраненную в LocalStorage в этом формате:

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

, что не приемлемый формат для даты конструктора?

Как я могу правильно хранить и возвращать даты из localStorage?

ответ

9

Вы можете получить его обратно, как Отметка времени Unix. Не забудьте передать число в конструктор Date.

Во-первых, сохранить. Добавьте + в новый, чтобы сделать это отметкой времени.

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

Тогда позже извлечь его, но передать номер, Дата конструктору:

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

Попробуйте это:

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

Это дало мне выход: "12-12-2013 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

Возвращаемая часть нуждается в parseInt. Посмотрите на мой ответ? – Zlatko

Смежные вопросы